Hi Dave,

PFA patch for Languages node.

*Run the test suite by following command:*
  python runtests.py

Thank you.


-- 
Best,
Priyanka

EnterpriseDB Corporation
The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/__init__.py
new file mode 100644
index 0000000..8a1934d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/__init__.py
@@ -0,0 +1,16 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from pgadmin.utils.route import BaseTestGenerator
+
+
+class LanguageTestGenerator(BaseTestGenerator):
+
+    def runTest(self):
+        return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py
new file mode 100644
index 0000000..e5453b4
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_add.py
@@ -0,0 +1,80 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+from __future__ import print_function
+import json
+import uuid
+
+from pgadmin.utils.route import BaseTestGenerator
+from regression import parent_node_dict
+from regression import test_utils as utils
+from pgadmin.browser.server_groups.servers.databases.tests import \
+    utils as database_utils
+from . import utils as language_utils
+
+
+class LanguagesAddTestCase(BaseTestGenerator):
+    scenarios = [
+        ('Language add test case', dict(url='/browser/language/obj/'))
+    ]
+
+    def setUp(self):
+        self.server_data = parent_node_dict["database"][-1]
+        self.server_id = self.server_data["server_id"]
+        self.db_id = self.server_data['db_id']
+        self.db_name = self.server_data["db_name"]
+        db_con = database_utils.connect_database(self,
+                                                 utils.SERVER_GROUP,
+                                                 self.server_id,
+                                                 self.db_id)
+        if not db_con["info"] == "Database connected.":
+            raise Exception("Could not connect to database.")
+
+    def runTest(self):
+        """This function will add language under test database."""
+
+        db_user = self.server['username']
+
+        self.data = {
+            "lanacl": [],
+            "laninl": "btendscan",
+            "lanowner": db_user,
+            "lanproc": "plpgsql_call_handler",
+            "lanval": "fmgr_c_validator",
+            "name": "language_%s" % str(uuid.uuid4())[1:4],
+            "seclabels": [],
+            "template_list":
+                [
+                    "plperl",
+                    "plperlu",
+                    "plpython2u",
+                    "plpython3u",
+                    "plpythonu",
+                    "pltcl",
+                    "pltclu"
+                ],
+            "trusted": "true"
+                }
+
+        response = self.tester.post(
+            self.url + str(utils.SERVER_GROUP) + '/' +
+            str(self.server_id) + '/' + str(
+                self.db_id) + '/',
+            data=json.dumps(self.data),
+            content_type='html/json')
+
+        self.assertEquals(response.status_code, 200)
+
+    def tearDown(self):
+        """This function delete added language and
+        disconnect the test database."""
+
+        language_utils.delete_language(self.server, self.db_name,
+                                       self.data['name'])
+        database_utils.disconnect_database(self, self.server_id, self.db_id)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py
new file mode 100644
index 0000000..f573071
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_delete.py
@@ -0,0 +1,54 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from __future__ import print_function
+import uuid
+
+from pgadmin.utils.route import BaseTestGenerator
+from regression import parent_node_dict
+from regression import test_utils as utils
+from pgadmin.browser.server_groups.servers.databases.tests import \
+    utils as database_utils
+from . import utils as language_utils
+
+
+class LanguagesDeleteTestCase(BaseTestGenerator):
+    scenarios = [
+        ('Language delete test case', dict(url='/browser/language/obj/'))
+    ]
+
+    def setUp(self):
+        self.server_data = parent_node_dict["database"][-1]
+        self.server_id = self.server_data["server_id"]
+        self.db_id = self.server_data['db_id']
+        self.db_name = self.server_data["db_name"]
+        self.lang_name = "language_%s" % str(uuid.uuid4())[1:4]
+
+        db_con = database_utils.connect_database(self,
+                                                 utils.SERVER_GROUP,
+                                                 self.server_id,
+                                                 self.db_id)
+        if not db_con["info"] == "Database connected.":
+            raise Exception("Could not connect to database.")
+        self.language_id = language_utils.create_language(self.server,
+                                                          self.db_name,
+                                                          self.lang_name)
+
+    def runTest(self):
+        """This function will delete language under test database."""
+
+        response = self.tester.delete("{0}{1}/{2}/{3}/{4}".format(
+            self.url, utils.SERVER_GROUP, self.server_id, self.db_id,
+            self.language_id), follow_redirects=True)
+        self.assertEquals(response.status_code, 200)
+
+    def tearDown(self):
+        """This function disconnect the test database."""
+
+        database_utils.disconnect_database(self, self.server_id, self.db_id)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get.py
new file mode 100644
index 0000000..a494128
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get.py
@@ -0,0 +1,56 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+from __future__ import print_function
+import uuid
+
+from pgadmin.utils.route import BaseTestGenerator
+from regression import parent_node_dict
+from regression import test_utils as utils
+from pgadmin.browser.server_groups.servers.databases.tests import \
+    utils as database_utils
+from . import utils as language_utils
+
+
+class LanguagesGetTestCase(BaseTestGenerator):
+    scenarios = [
+        ('Language get test case', dict(url='/browser/language/obj/'))
+    ]
+
+    def setUp(self):
+        self.server_data = parent_node_dict["database"][-1]
+        self.server_id = self.server_data["server_id"]
+        self.db_id = self.server_data['db_id']
+        self.db_name = self.server_data["db_name"]
+        self.lang_name = "language_%s" % str(uuid.uuid4())[1:4]
+        db_con = database_utils.connect_database(self,
+                                                 utils.SERVER_GROUP,
+                                                 self.server_id,
+                                                 self.db_id)
+
+        if not db_con["info"] == "Database connected.":
+            raise Exception("Could not connect to database.")
+        self.language_id = language_utils.create_language(self.server,
+                                                          self.db_name,
+                                                          self.lang_name)
+
+    def runTest(self):
+        """This function will get the language under test database."""
+
+        response = self.tester.get("{0}{1}/{2}/{3}/{4}".format(
+            self.url, utils.SERVER_GROUP, self.server_id, self.db_id,
+            self.language_id), follow_redirects=True)
+        self.assertEquals(response.status_code, 200)
+
+    def tearDown(self):
+        """This function delete added language and
+               disconnect the test database."""
+
+        language_utils.delete_language(self.server, self.db_name,
+                                       self.lang_name)
+        database_utils.disconnect_database(self, self.server_id, self.db_id)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_put.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_put.py
new file mode 100644
index 0000000..23d7f29
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_put.py
@@ -0,0 +1,62 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+from __future__ import print_function
+import json
+import uuid
+
+from pgadmin.utils.route import BaseTestGenerator
+from regression import parent_node_dict
+from regression import test_utils as utils
+from pgadmin.browser.server_groups.servers.databases.tests import \
+    utils as database_utils
+from . import utils as language_utils
+
+
+class LanguagesPutTestCase(BaseTestGenerator):
+    scenarios = [
+        ('Language update test case', dict(url='/browser/language/obj/'))
+    ]
+
+    def setUp(self):
+        self.server_data = parent_node_dict["database"][-1]
+        self.server_id = self.server_data["server_id"]
+        self.db_id = self.server_data['db_id']
+        self.db_name = self.server_data["db_name"]
+        self.lang_name = "language_%s" % str(uuid.uuid4())[1:4]
+        db_con = database_utils.connect_database(self,
+                                                 utils.SERVER_GROUP,
+                                                 self.server_id,
+                                                 self.db_id)
+        if not db_con["info"] == "Database connected.":
+            raise Exception("Could not connect to database.")
+        self.language_id = language_utils.create_language(self.server,
+                                                          self.db_name,
+                                                          self.lang_name)
+
+    def runTest(self):
+        """This function will update the language under test database."""
+
+        data = \
+            {
+                "id": self.language_id,
+                "description": "This is test comment."
+            }
+        response = self.tester.put("{0}{1}/{2}/{3}/{4}".format(
+            self.url, utils.SERVER_GROUP, self.server_id, self.db_id,
+            self.language_id), data=json.dumps(data),
+            follow_redirects=True)
+        self.assertEquals(response.status_code, 200)
+
+    def tearDown(self):
+        """This function delete added language and
+        disconnect the test database."""
+
+        language_utils.delete_language(self.server, self.db_name,
+                                       self.lang_name)
+        database_utils.disconnect_database(self, self.server_id, self.db_id)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py
new file mode 100644
index 0000000..c5c7795
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py
@@ -0,0 +1,108 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+from __future__ import print_function
+import sys
+import traceback
+
+from regression.test_utils import get_db_connection
+
+
+def create_language(server, db_name, lang_name):
+    """
+    This function add a language into database
+    :param server: server details
+    :type server: dict
+    :param db_name: database name
+    :type db_name: str
+    :param lang_name: language name
+    :type lang_name: str
+    :return cast id
+    :rtype: int
+    """
+    try:
+        connection = get_db_connection(db_name,
+                                       server['username'],
+                                       server['db_password'],
+                                       server['host'],
+                                       server['port'])
+
+        pg_cursor = connection.cursor()
+        query = ("CREATE TRUSTED PROCEDURAL LANGUAGE %s "
+                 "HANDLER plpgsql_call_handler" % lang_name)
+        pg_cursor.execute(query)
+        connection.commit()
+        # Get 'oid' from newly created language
+        pg_cursor.execute("SELECT oid from pg_language where lanname='%s'" %
+                          lang_name)
+        language = pg_cursor.fetchone()
+        language_id = language[0]
+        connection.close()
+        return language_id
+    except Exception:
+        traceback.print_exc(file=sys.stderr)
+
+
+def verify_language(server, db_name, lang_name):
+    """
+    This function verifies the language exist in database or not.
+    :param server: server details
+    :type server: dict
+    :param db_name: database name
+    :type db_name: str
+    :param lang_name: language name
+    :type lang_name: str
+    :return language: language record
+    :rtype: tuple
+    """
+    try:
+        connection = get_db_connection(db_name,
+                                       server['username'],
+                                       server['db_password'],
+                                       server['host'],
+                                       server['port'])
+        pg_cursor = connection.cursor()
+        pg_cursor.execute("SELECT oid from pg_language where lanname='%s'" %
+                          lang_name)
+        language = pg_cursor.fetchall()
+        connection.close()
+        return language
+    except Exception:
+        traceback.print_exc(file=sys.stderr)
+
+
+def delete_language(server, db_name, lang_name):
+    """
+    This function delete the language exist in database.
+    :param server: server details
+    :type server: dict
+    :param db_name: database name
+    :type db_name: str
+    :param lang_name: language name
+    :type lang_name: str
+    :return None
+    """
+    try:
+        connection = get_db_connection(db_name,
+                                       server['username'],
+                                       server['db_password'],
+                                       server['host'],
+                                       server['port'])
+        pg_cursor = connection.cursor()
+        pg_cursor.execute("SELECT * from pg_language where lanname='%s'" %
+                          lang_name)
+        languages = pg_cursor.fetchall()
+        language_count = len(languages)
+        if language_count:
+            pg_cursor.execute(
+                "DELETE FROM pg_language where lanname='%s'" %
+                lang_name)
+            connection.commit()
+        connection.close()
+    except Exception:
+        traceback.print_exc(file=sys.stderr)
-- 
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers

Reply via email to