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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers