public inbox for [email protected]
help / color / mirror / Atom feedFrom: Priyanka Shendge <[email protected]>
To: [email protected]
Cc: Kanchan Mohitey <[email protected]>
Subject: pgAdmin IV API test cases patch
Date: Sun, 5 Jun 2016 23:26:03 +0530
Message-ID: <CAKmZXFQ2Hj1-OZpSGFEBB-vOypQ_=1b4Yr_VytZ-E1=CBw9Yhw@mail.gmail.com> (raw)
List-Unsubscribe: <mailto:[email protected]?body=unsub%20pgadmin-hackers>
Hi,
PFA patch for API test cases for tree nodes/modules. This patch does not
include
api tests for following modules:
1. Type
2. Table child nodes
3. FTS modules
Kindly, review the same and let me know for any modification.
--
Best,
Priyanka
EnterpriseDB Corporation
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Attachments:
[text/x-patch] pgAdmin_api_tests.patch (274.2K, 3-pgAdmin_api_tests.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/__init__.py
new file mode 100644
index 0000000..bfb0263
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/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 CastTestGenerator(BaseTestGenerator):
+
+ def runTest(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
new file mode 100644
index 0000000..3c793cd
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json, pickle, os
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class CastsAddTestCase(LoginTestCase):
+ """This class will add cast under database node. """
+
+ priority = 19
+
+ scenarios = [
+ # Fetching default URL for cast node.
+ ('Check Cast Node', dict(url='/browser/cast/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add cast under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ data =\
+ {
+ "castcontext": config_data['test_casts_credentials']
+ ['test_cast_context'],
+ "encoding": config_data['test_casts_credentials']
+ ['test_encoding'],
+ "name": config_data['test_casts_credentials']
+ ['test_name'],
+ "srctyp": config_data['test_casts_credentials']
+ ['test_source_type'],
+ "trgtyp": config_data['test_casts_credentials']
+ ['test_target_type']
+
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ cast_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["cid"].append(cast_id)
+
+ cast_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, cast_output)
+ cast_output.close()
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
new file mode 100644
index 0000000..be76529
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
@@ -0,0 +1,60 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class CastsDeleteTestCase(LoginTestCase):
+ """
+ This class will delete cast node present on the object browser's
+ tree node by response code.
+ """
+ priority = 22
+
+ scenarios = [
+ # Fetching default URL for cast node.
+ ('Check Cast Node', dict(url='/browser/cast/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete cast under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ cast_id = all_id["cid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(cast_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No roles(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' + str(cast_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
new file mode 100644
index 0000000..5603707
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
@@ -0,0 +1,46 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class CastsGetTestCase(LoginTestCase):
+ """ This class will fetch the cast node added under database. """
+
+ priority = 20
+
+ scenarios = [
+ # Fetching default URL for cast node.
+ ('Check Cast Node', dict(url='/browser/cast/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will get cast under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ cast_id = all_id["cid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(cast_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py
new file mode 100644
index 0000000..ff6735c
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_put.py
@@ -0,0 +1,66 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class CastsUpdateTestCase(LoginTestCase):
+ """
+ This class will update cast node present on the object browser's
+ tree node by response code.
+ """
+ priority = 21
+
+ scenarios = [
+ # Fetching default URL for cast node.
+ ('Check Cast Node', dict(url='/browser/cast/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update cast under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ cast_id = all_id["cid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(cast_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No roles(s) to update!!!")
+
+ data = {
+ "description": config_data["test_cast_update_data"]
+ ["test_comment"],
+ "id": cast_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(cast_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/__init__.py
new file mode 100644
index 0000000..4b8df06
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/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 EventTriggerGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return []
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_add.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_add.py
new file mode 100644
index 0000000..a8ff5ee
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class EventTriggerAddTestCase(LoginTestCase):
+ """ This class will add new event trigger under schema node. """
+
+ priority = 39
+
+ scenarios = [
+ # Fetching default URL for event trigger node.
+ ('Fetch Event Trigger Node URL',
+ dict(url='/browser/event_trigger/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add event trigger under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ data = \
+ {
+ "enabled": config_data['test_event_trigger_credentials']
+ ['test_enable'],
+ "eventfunname": config_data['test_event_trigger_credentials']
+ ['test_event_func'],
+ "eventname": config_data['test_event_trigger_credentials']
+ ['test_event_name'],
+ "eventowner": config_data['test_event_trigger_credentials']
+ ['test_event_owner'],
+ "name": config_data['test_event_trigger_credentials']
+ ['test_name'],
+ "providers": config_data['test_event_trigger_credentials']
+ ['test_provider']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/', data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ event_trigger_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["etid"].append(event_trigger_id)
+
+ event_trigger_output = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, event_trigger_output)
+ event_trigger_output.close()
diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_delete.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_delete.py
new file mode 100644
index 0000000..bbcb19c
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_delete.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class EventTriggerDeleteTestCase(LoginTestCase):
+ """ This class will delete added event trigger under schema node. """
+
+ priority = 42
+
+ scenarios = [
+ # Fetching default URL for event trigger node.
+ ('Fetch Event Trigger Node URL', dict(url='/browser/event_trigger/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete event trigger under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ event_trigger_id = all_id["etid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(event_trigger_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No event trigger(s) to update!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(event_trigger_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_get.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_get.py
new file mode 100644
index 0000000..92b417b
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_get.py
@@ -0,0 +1,47 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class EventTriggerGetTestCase(LoginTestCase):
+ """ This class will fetch added event trigger under schema node. """
+
+ priority = 40
+
+ scenarios = [
+ # Fetching default URL for event trigger node.
+ ('Fetch Event Trigger Node URL',
+ dict(url='/browser/event_trigger/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch event trigger under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ event_trigger_id = all_id["etid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(event_trigger_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_put.py b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_put.py
new file mode 100644
index 0000000..b8ab8de
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/test_event_trigger_put.py
@@ -0,0 +1,65 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class EventTriggerPutTestCase(LoginTestCase):
+ """ This class will update added event trigger under schema node. """
+
+ priority = 41
+
+ scenarios = [
+ # Fetching default URL for event trigger node.
+ ('Fetch Event Trigger Node URL',
+ dict(url='/browser/event_trigger/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update event trigger under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ event_trigger_id = all_id["etid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(event_trigger_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No event trigger(s) to update!!!")
+
+ data = \
+ {
+ "comment": config_data['test_event_trigger_update_data']
+ ['test_comment'],
+ "id": event_trigger_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(event_trigger_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/__init__.py
new file mode 100644
index 0000000..025b57e
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/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 ExtensionGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return []
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py
new file mode 100644
index 0000000..af02be8
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_add.py
@@ -0,0 +1,77 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+import pickle
+import os
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class ExtensionsAddTestCase(LoginTestCase):
+ """ This class will add new extension under extension node. """
+ priority = 33
+
+ scenarios = [
+ # Fetching default URL for extension node.
+ ('Check Extension Node', dict(url='/browser/extension/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add extension under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ data =\
+ {
+ "name": config_data['test_extension_credentials']
+ ['test_name'],
+ "relocatable": config_data['test_extension_credentials']
+ ['test_relocate'],
+ "schema": config_data['test_extension_credentials']
+ ['test_schema'],
+ "version": config_data['test_extension_credentials']
+ ['test_version']
+
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ extension_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["eid"].append(extension_id)
+
+ extension_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, extension_output)
+ extension_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py
new file mode 100644
index 0000000..33fc9bc
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_delete.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class ExtensionDeleteTestCase(LoginTestCase):
+ """ This class will delete extension node added under database node. """
+
+ priority = 96
+
+ scenarios = [
+ # Fetching default URL for extension node.
+ ('Check Cast Node', dict(url='/browser/extension/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete added extension under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ extension_id = all_id["eid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' + str(extension_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No extension(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(extension_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py
new file mode 100644
index 0000000..8778651
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_get.py
@@ -0,0 +1,45 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class ExtensionGetTestCase(LoginTestCase):
+ """ This class will fetch the extension node added under database. """
+
+ priority = 24
+
+ scenarios = [
+ # Fetching default URL for extension node.
+ ('Check Cast Node', dict(url='/browser/extension/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch cast under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ extension_id = all_id["eid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(extension_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py
new file mode 100644
index 0000000..caa68de
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/test_extension_put.py
@@ -0,0 +1,66 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class ExtensionDeleteTestCase(LoginTestCase):
+ """
+ This class will update extension node present on the object browser's
+ tree node by response code.
+ """
+ priority = 25
+
+ scenarios = [
+ # Fetching default URL for extension node.
+ ('Check Cast Node', dict(url='/browser/extension/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update extension node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ extension_id = all_id["eid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/'
+ + str(server_id) + '/' + str(db_id) + '/'
+ + str(extension_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No extension(s) to update!!!")
+
+ data = \
+ {
+ "id": extension_id,
+ "schema": config_data["test_extension_update_data"]
+ ["test_schema"]
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(extension_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/__init__.py
new file mode 100644
index 0000000..8fd1422
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/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 ForeignServersGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return []
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py
new file mode 100644
index 0000000..a3e69f0
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_add.py
@@ -0,0 +1,92 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import os
+import pickle
+
+
+class ForeignServerAddTestCase(LoginTestCase):
+ """
+ This class will add foreign server under database node.
+ """
+ priority = 71
+
+ scenarios = [
+ # Fetching default URL for foreign server node.
+ ('Check FDW Node', dict(url='/browser/foreign_server/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add foreign server under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) to update!")
+
+ data = \
+ {
+ "fsrvacl": config_data['test_foreign_server_credentials']
+ ['test_fsr_acl'],
+ "fsrvoptions": config_data['test_foreign_server_credentials']
+ ['test_fsr_optns'],
+ "fsrvowner": config_data['test_foreign_server_credentials']
+ ['test_fsr_owner'],
+ "name": config_data['test_foreign_server_credentials']
+ ['test_name']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ frs_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["fsid"].append(frs_id)
+
+ frs_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, frs_output)
+ frs_output.close()
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py
new file mode 100644
index 0000000..84b8e2d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_delete.py
@@ -0,0 +1,73 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class ForeignServerDeleteTestCase(LoginTestCase):
+ """ This class will delete foreign server under database node. """
+
+ priority = 94
+
+ scenarios = [
+ # Fetching default URL for foreign server node.
+ ('Check FDW Node', dict(url='/browser/foreign_server/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete foreign server under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) to available!")
+
+ frs_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' +
+ str(frs_id),
+ content_type='html/json')
+
+ frs_respdata = json.loads(frs_response.data.decode())
+
+ if len(frs_respdata) == 0:
+ raise Exception("No FRS(s) to update!")
+
+ delete_response = self.tester.delete(self.url + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(fdw_id) + '/' +
+ str(frs_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(delete_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py
new file mode 100644
index 0000000..5bdf35a
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_get.py
@@ -0,0 +1,61 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class ForeignServerGetTestCase(LoginTestCase):
+ """
+ This class will add foreign server under FDW node.
+ """
+ priority = 72
+
+ scenarios = [
+ # Fetching default URL for foreign server node.
+ ('Check FDW Node', dict(url='/browser/foreign_server/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add foreign server under FDW node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) to available!")
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' + str(frs_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py
new file mode 100644
index 0000000..2d170b3
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/test_foreign_servers_put.py
@@ -0,0 +1,79 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class ForeignServerPutTestCase(LoginTestCase):
+ """
+ This class will update foreign server under database node.
+ """
+ priority = 73
+
+ scenarios = [
+ # Fetching default URL for foreign server node.
+ ('Check FDW Node', dict(url='/browser/foreign_server/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add foreign server under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) to available!")
+
+ # Get FRS
+ frs_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' +
+ str(frs_id),
+ content_type='html/json')
+
+ frs_respdata = json.loads(frs_response.data.decode())
+
+ if len(frs_respdata) == 0:
+ raise Exception("No FRS(s) to update!")
+
+ data = \
+ {
+ "description": config_data['test_FRS_update_data']
+ ['test_comment'],
+ "id": frs_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' +
+ str(frs_id), data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/__init__.py
new file mode 100644
index 0000000..0b87db2
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/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 UserMappingGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return []
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py
new file mode 100644
index 0000000..395ff06
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_add.py
@@ -0,0 +1,104 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import os
+import pickle
+
+
+class UserMappingAddTestCase(LoginTestCase):
+ """
+ This class will add user mapping under foreign server node.
+ """
+ priority = 74
+
+ scenarios = [
+ # Fetching default URL for user mapping node.
+ ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add user mapping under foreign server node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ srv_grp = config_data['test_server_group']
+
+ #print("in fs:::::", fdw_id)
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) available!")
+
+ # Get FRS
+ frs_response = self.tester.get('/browser/foreign_server/obj/'
+ '{0}/{1}/{2}/{3}/{4}'.format
+ (srv_grp, server_id, db_id, fdw_id,
+ frs_id), content_type='html/json')
+
+ frs_respdata = json.loads(frs_response.data.decode())
+
+ if len(frs_respdata) == 0:
+ raise Exception("No FRS(s) available!")
+
+ data = \
+ {
+ "name": config_data['test_user_mapping_credentials']
+ ['test_name'],
+ "um_options": config_data['test_user_mapping_credentials']
+ ['test_option'],
+ "umoptions": config_data['test_user_mapping_credentials']
+ ['test_options']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' +
+ str(frs_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ um_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["umid"].append(um_id)
+
+ um_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, um_output)
+ um_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py
new file mode 100644
index 0000000..0bd644a
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_delete.py
@@ -0,0 +1,84 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class UserMappingDeleteTestCase(LoginTestCase):
+ """
+ This class will delete user mapping under foreign server node.
+ """
+ priority = 77
+
+ scenarios = [
+ # Fetching default URL for user mapping node.
+ ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function delete user mapping under foreign server node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ um_id = all_id['umid'][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) available!")
+
+ # Get FRS
+ frs_response = self.tester.get('/browser/foreign_server/obj/'
+ '{0}/{1}/{2}/{3}/{4}'.format
+ (srv_grp, server_id, db_id, fdw_id,
+ frs_id), content_type='html/json')
+
+ frs_respdata = json.loads(frs_response.data.decode())
+
+ if len(frs_respdata) == 0:
+ raise Exception("No FRS(s) available!")
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' + str(frs_id) +
+ '/' + str(um_id),
+ content_type='html/json')
+
+ um_respdata = json.loads(fdw_response.data.decode())
+
+ if len(um_respdata) == 0:
+ raise Exception("No user mapping(s) to delete!")
+
+ put_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' + str(fdw_id) +
+ '/' + str(frs_id) + '/' +
+ str(um_id), follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py
new file mode 100644
index 0000000..541f371
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_get.py
@@ -0,0 +1,72 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class UserMappingGetTestCase(LoginTestCase):
+ """
+ This class will add user mapping under foreign server node.
+ """
+ priority = 75
+
+ scenarios = [
+ # Fetching default URL for user mapping node.
+ ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch user mapping under foreign server node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ um_id = all_id['umid'][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) available!")
+
+ # Get FRS
+ frs_response = self.tester.get('/browser/foreign_server/obj/'
+ '{0}/{1}/{2}/{3}/{4}'.format
+ (srv_grp, server_id, db_id, fdw_id,
+ frs_id), content_type='html/json')
+
+ frs_respdata = json.loads(frs_response.data.decode())
+
+ if len(frs_respdata) == 0:
+ raise Exception("No FRS(s) available!")
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' + str(frs_id) +
+ '/' + str(um_id),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py
new file mode 100644
index 0000000..f5e5dbb
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/test_user_mapping_put.py
@@ -0,0 +1,92 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class UserMappingPutTestCase(LoginTestCase):
+ """
+ This class will update user mapping under foreign server node.
+ """
+ priority = 76
+
+ scenarios = [
+ # Fetching default URL for user mapping node.
+ ('Check user mapping Node', dict(url='/browser/user_mapping/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function update user mapping under foreign server node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ frs_id = all_id['fsid'][0]
+ um_id = all_id['umid'][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get FDW
+ fdw_response = self.tester.get('/browser/foreign_data_wrapper/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, fdw_id),
+ content_type='html/json')
+
+ fdw_respdata = json.loads(fdw_response.data.decode())
+
+ if len(fdw_respdata) == 0:
+ raise Exception("No FDW(s) available!")
+
+ # Get FRS
+ frs_response = self.tester.get('/browser/foreign_server/obj/'
+ '{0}/{1}/{2}/{3}/{4}'.format
+ (srv_grp, server_id, db_id, fdw_id,
+ frs_id), content_type='html/json')
+
+ frs_respdata = json.loads(frs_response.data.decode())
+
+ if len(frs_respdata) == 0:
+ raise Exception("No FRS(s) available!")
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' + str(frs_id) +
+ '/' + str(um_id),
+ content_type='html/json')
+
+ um_respdata = json.loads(fdw_response.data.decode())
+
+ if len(um_respdata) == 0:
+ raise Exception("No user mapping(s) to update!")
+
+ data = \
+ {
+ "id": um_id,
+ "umoptions": config_data['test_user_mapping_update_data']
+ ['test_options']
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id) + '/' +
+ str(frs_id) + '/' + str(um_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/__init__.py
new file mode 100644
index 0000000..6f9f064
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/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 FDWGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return []
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_add.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_add.py
new file mode 100644
index 0000000..cf68fcd
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_add.py
@@ -0,0 +1,81 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json, os, pickle
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class FDWDAddTestCase(LoginTestCase):
+ """
+ This class will add foreign data wrappers under database node.
+ """
+ priority = 44
+
+ scenarios = [
+ # Fetching default URL for foreign data wrapper node.
+ ('Check FDW Node', dict(url='/browser/foreign_data_wrapper/obj/'))
+
+ ]
+
+ def runTest(self):
+ """ This function will add foreign data wrapper under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ data = \
+ {
+ "fdwacl": config_data['test_FDW_credentials']
+ ['test_acl'],
+ "fdwhan": config_data['test_FDW_credentials']
+ ['test_handler'],
+ "fdwoptions": config_data['test_FDW_credentials']
+ ['test_options'],
+ "fdwowner": config_data['test_FDW_credentials']
+ ['test_owner'],
+ "fdwvalue": config_data['test_FDW_credentials']
+ ['test_validator'],
+ "name": config_data['test_FDW_credentials']
+ ['test_name']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ fdw_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["fid"].append(fdw_id)
+
+ fdw_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, fdw_output)
+ fdw_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_delete.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_delete.py
new file mode 100644
index 0000000..f30004d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_delete.py
@@ -0,0 +1,60 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class FDWDeleteTestCase(LoginTestCase):
+ """ This class will delete foreign data wrappers under database node. """
+
+ priority = 95
+
+ scenarios = [
+ # Fetching default URL for foreign data wrapper node.
+ ('Check FDW Node', dict(url='/browser/foreign_data_wrapper/obj/'))
+ ]
+
+ def runTest(self):
+ """
+ This function will delete foreign data wrapper under database node.
+ """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No FDW(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' + str(fdw_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_get.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_get.py
new file mode 100644
index 0000000..588c0fb
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_get.py
@@ -0,0 +1,48 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class FDWDGetTestCase(LoginTestCase):
+ """ This class will fetch foreign data wrappers under database node. """
+
+ priority = 45
+
+ scenarios = [
+ # Fetching default URL for foreign data wrapper node.
+ ('Check FDW Node', dict(url='/browser/foreign_data_wrapper/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch foreign data wrapper added
+ under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_put.py b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_put.py
new file mode 100644
index 0000000..f8914f5
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/test_FDW_put.py
@@ -0,0 +1,68 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class FDWDPutTestCase(LoginTestCase):
+ """
+ This class will update foreign data wrappers under database node.
+ """
+ priority = 46
+
+ scenarios = [
+ # Fetching default URL for foreign data wrapper node.
+ ('Check FDW Node', dict(url='/browser/foreign_data_wrapper/obj/'))
+
+ ]
+
+ def runTest(self):
+ """ This function will update foreign data wrapper under
+ database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ fdw_id = all_id["fid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(fdw_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No FDW(s) to update!!!")
+
+ data = \
+ {
+ "description": config_data['test_FDW_update_data']
+ ['test_comment'],
+ "id": fdw_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' + str(fdw_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
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..f5a240e
--- /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 generate_tests(self):
+ return []
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..2fc54a8
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_get.py
@@ -0,0 +1,46 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_nodes import test_getnodes
+from regression.test_utils import get_ids
+
+
+class LanguageGetTestCase(LoginTestCase):
+ """
+ This class will fetch language node available under database node.
+ """
+ priority = 31
+
+ scenarios = [
+ # Fetching default URL for language node.
+ ('Check Cast Node', dict(url='/browser/language/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch language under 1st server of tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ lang_id = all_id["lid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' + str(lang_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
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..df0a2e2
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/test_language_put.py
@@ -0,0 +1,63 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class LanguageUpdateTestCase(LoginTestCase):
+ """ This class will update available language node under database node. """
+
+ priority = 32
+
+ scenarios = [
+ # Fetching default URL for cast node.
+ ('Check Language Node URL', dict(url='/browser/language/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update language node's comments field. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ lang_id = all_id["lid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(lang_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No language(s) to update!!!")
+
+ data = {
+ "description": config_data["test_language_update_data"]
+ ["test_comment"],
+ "id": lang_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(lang_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/__init__.py
new file mode 100644
index 0000000..ba78cb1
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/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 CollationTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
new file mode 100644
index 0000000..49ca0ef
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
@@ -0,0 +1,82 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class CollationAddTestCase(LoginTestCase):
+ """ This class will add new collation under schema node. """
+
+ priority = 48
+
+ scenarios = [
+ # Fetching default URL for collation node.
+ ('Default Node URL', dict(url='/browser/collation/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add collation under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get('/browser/schema/obj/' + str(srv_grp) + '/'
+ + str(server_id) + '/' + str(db_id) + '/'
+ + str(schema_id),
+ content_type='html/json')
+
+ data = \
+ {
+ "copy_collation": config_data['test_collation_credentials']
+ ['test_copy_collation'],
+ "name": config_data['test_collation_credentials']
+ ['test_name'],
+ "owner": config_data['test_collation_credentials']
+ ['test_owner'],
+ "schema": config_data['test_collation_credentials']
+ ['test_schema']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ collation_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["coid"].append(collation_id)
+
+ collation_output = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, collation_output)
+ collation_output.close()
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.py
new file mode 100644
index 0000000..96d95fe
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_delete.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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class CollationDeleteTestCase(LoginTestCase):
+ """ This class will delete added collation under schema node. """
+
+ priority = 51
+
+ scenarios = [
+ # Fetching default URL for collation node.
+ ('Fetch collation Node URL', dict(url='/browser/collation/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete collation under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ collation_id = all_id["coid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(collation_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py
new file mode 100644
index 0000000..c411d70
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_get.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class CollationGetTestCase(LoginTestCase):
+ """ This class will fetch new collation under schema node. """
+
+ priority = 49
+
+ scenarios = [
+ # Fetching default URL for collation node.
+ ('Fecth collation Node URL', dict(url='/browser/collation/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch collation under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ collation_id = all_id["coid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(collation_id),
+ content_type='html/json')
+
+ self.assertEquals(get_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py
new file mode 100644
index 0000000..b17cdd7
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_put.py
@@ -0,0 +1,68 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class CollationPutTestCase(LoginTestCase):
+ """ This class will update added collation under schema node. """
+
+ priority = 50
+
+ scenarios = [
+ # Fetching default URL for collation node.
+ ('Fetch collation Node URL', dict(url='/browser/collation/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update collation under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ collation_id = all_id["coid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) available!!!")
+
+ data = \
+ {
+ "description": config_data['test_collation_update_data']
+ ['test_comment'],
+ "id": collation_id,
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(collation_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/__init__.py
new file mode 100644
index 0000000..7dca204
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/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 DomainTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py
new file mode 100644
index 0000000..6b09c42
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_add.py
@@ -0,0 +1,99 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class DomainAddTestCase(LoginTestCase):
+ """ This class will add new domain under schema node. """
+
+ priority = 52
+
+ scenarios = [
+ # Fetching default URL for domain node.
+ ('Fecth domain Node URL', dict(url='/browser/domain/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add domain under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ data = \
+ {
+ "basensp": config_data['test_domain_data']
+ ['test_schema'],
+ "basetype": config_data['test_domain_data']
+ ['test_basetype'],
+ "collname": config_data['test_domain_data']
+ ['test_collation'],
+ "constraints": config_data['test_domain_data']
+ ['test_constraints'],
+ "is_tlength": config_data['test_domain_data']
+ ['test_lenght'],
+ "max_val": config_data['test_domain_data']
+ ['test_max_value'],
+ "min_val": config_data['test_domain_data']
+ ['test_min_value'],
+ "name": config_data['test_domain_data']
+ ['test_name'],
+ "owner": config_data['test_domain_data']
+ ['test_owner'],
+ "seclabels": config_data['test_domain_data']
+ ['test_security'],
+ "typdefault": config_data['test_domain_data']
+ ['test_defalt_type'],
+ "typlen": config_data['test_domain_data']
+ ['test_type_len'],
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ domain_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["doid"].append(domain_id)
+
+ domain_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, domain_output)
+ domain_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_delete.py
new file mode 100644
index 0000000..f19a270
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_delete.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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class DomainDeleteTestCase(LoginTestCase):
+ """ This class will delete new domain under schema node. """
+
+ priority = 55
+
+ scenarios = [
+ # Fetching default URL for domain node.
+ ('Fecth domain Node URL', dict(url='/browser/domain/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete domain under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ domain_id= all_id["doid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(domain_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_get.py
new file mode 100644
index 0000000..82b55d0
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_get.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class DomainGetTestCase(LoginTestCase):
+ """ This class will fetch new collation under schema node. """
+
+ priority = 53
+
+ scenarios = [
+ # Fetching default URL for domain node.
+ ('Fecth domain Node URL', dict(url='/browser/domain/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add domain under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ domain_id= all_id["doid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(domain_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_put.py
new file mode 100644
index 0000000..0d7deea
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/tests/test_domain_put.py
@@ -0,0 +1,66 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class DomainPutTestCase(LoginTestCase):
+ """ This class will fetch new collation under schema node. """
+
+ priority = 54
+
+ scenarios = [
+ # Fetching default URL for domain node.
+ ('Fecth domain Node URL', dict(url='/browser/domain/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update domain under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ domain_id= all_id["doid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+ data = \
+ {
+ "description": config_data['test_domain_update_data']
+ ['test_comment'],
+ "id": domain_id,
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(domain_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/__init__.py
new file mode 100644
index 0000000..22a4063
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/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 ForeignTableTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py
new file mode 100644
index 0000000..fff47ab
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_add.py
@@ -0,0 +1,102 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ForeignTableAddTestCase(LoginTestCase):
+ """ This class will add new foreign table under schema node. """
+
+ priority = 78
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/foreign-table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema
+ response = self.tester.get('/browser/schema/obj/{0}/{1}/{2}/'
+ '{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) available!!!")
+
+ data = \
+ {
+ "acl": config_data['test_foreign_table_credentials']
+ ['test_acl'],
+ "basensp": config_data['test_foreign_table_credentials']
+ ['test_schema_name'],
+ "columns": config_data['test_foreign_table_credentials']
+ ['test_column'],
+ "constraints": config_data['test_foreign_table_credentials']
+ ['test_constraints'],
+ "ftoptions": config_data['test_foreign_table_credentials']
+ ['test_options'],
+ "ftsrvname": config_data['test_foreign_table_credentials']
+ ['test_frs_name'],
+ "name": config_data['test_foreign_table_credentials']
+ ['test_name'],
+ "owner": config_data['test_foreign_table_credentials']
+ ['test_owner'],
+ "relacl": config_data['test_foreign_table_credentials']
+ ['test_rel_acl'],
+ "seclabels": config_data['test_foreign_table_credentials']
+ ['test_sec_lable'],
+ "stracl": config_data['test_foreign_table_credentials']
+ ['test_str_acl']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ ft_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["foid"].append(ft_id)
+
+ ft_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, ft_output)
+ ft_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py
new file mode 100644
index 0000000..c9f28e9
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_delete.py
@@ -0,0 +1,76 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ForeignTableDeleteTestCase(LoginTestCase):
+ """ This class will delete the added foreign table under schema node. """
+
+ priority = 81
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/foreign-table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ ft_id = all_id["foid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) available!!!")
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/' +
+ str(ft_id),
+ content_type='html/json')
+
+ respdata = json.loads(get_response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No foreign table(s) available!!!")
+
+ delete_response = self.tester.delete(self.url + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(ft_id),
+ follow_redirects=True)
+
+ self.assertEquals(delete_response.status_code, 200)
+
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py
new file mode 100644
index 0000000..2fe269e
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_get.py
@@ -0,0 +1,61 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ForeignTableGetTestCase(LoginTestCase):
+ """ This class will add new foreign table under schema node. """
+
+ priority = 79
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/foreign-table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ ft_id = all_id["foid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) available!!!")
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/' +
+ str(ft_id), content_type='html/json')
+
+ self.assertEquals(get_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py
new file mode 100644
index 0000000..77df464
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/tests/test_foreign_table_put.py
@@ -0,0 +1,81 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class ForeignTablePutTestCase(LoginTestCase):
+ """ This class will update added foreign table under schema node. """
+
+ priority = 80
+
+ scenarios = [
+ # Fetching default URL for foreign table node.
+ ('Fecth table Node URL', dict(url='/browser/foreign-table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update foreign under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ ft_id = all_id["foid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) available!!!")
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/' +
+ str(ft_id), content_type='html/json')
+
+ respdata = json.loads(get_response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No foreign table(s) available!!!")
+
+ data = \
+ {
+ "description": config_data['test_FT_update_data']
+ ['test_comment'],
+ "id": ft_id,
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(ft_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/__init__.py
new file mode 100644
index 0000000..03bf3f6
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/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 TriggerFunctionTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py
new file mode 100644
index 0000000..713bd23
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_add.py
@@ -0,0 +1,112 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class TriggerFuncAddTestCase(LoginTestCase):
+ """ This class will add new trigger function under schema node. """
+
+ priority = 36
+
+ scenarios = [
+ # Fetching default URL for trigger function node.
+ ('Fecth Trigger Function Node URL',
+ dict(url='/browser/trigger_function/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add trigger function under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get('/browser/schema/obj/' + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' + str(schema_id),
+ content_type='html/json')
+
+ data = \
+ {
+ "acl": config_data
+ ['test_trigger_function_credentials']['test_acl'],
+ "arguments": config_data
+ ['test_trigger_function_credentials']['test_args'],
+ "funcowner": config_data
+ ['test_trigger_function_credentials']['test_fun_owner'],
+ "lanname": config_data
+ ['test_trigger_function_credentials']['test_language'],
+ "name": config_data
+ ['test_trigger_function_credentials']['test_name'],
+ "options": config_data
+ ['test_trigger_function_credentials']['test_options'],
+ "probin": config_data
+ ['test_trigger_function_credentials']['test_probe'],
+ "proleakproof": config_data
+ ['test_trigger_function_credentials']['test_leak_proof'],
+ "pronamespace": config_data
+ ['test_trigger_function_credentials']['test_namespace'],
+ "prorettypename": config_data
+ ['test_trigger_function_credentials']['test_type'],
+ "prosecdef": config_data
+ ['test_trigger_function_credentials']['test_sec_def'],
+ "prosrc": config_data
+ ['test_trigger_function_credentials']['test_code'],
+ "provolatile": config_data
+ ['test_trigger_function_credentials']['test_volitile'],
+ "seclabels": config_data
+ ['test_trigger_function_credentials']['test_sec_label'],
+ "variables": config_data
+ ['test_trigger_function_credentials']['test_Variable']
+ }
+
+ if schema_id:
+ data['pronamespace'] = schema_id
+ else:
+ schema_id = data['pronamespace']
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ trg_func__id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["tfnid"].append(trg_func__id)
+
+ extension_output = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, extension_output)
+ extension_output.close()
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py
new file mode 100644
index 0000000..46d0859
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_delete.py
@@ -0,0 +1,63 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class TriggerFuncDeleteTestCase(LoginTestCase):
+ """ This class will add new trigger function under schema node. """
+
+ priority = 43
+
+ scenarios = [
+ # Fetching default URL for trigger function node.
+ ('Fetch Trigger Function Node URL',
+ dict(url='/browser/trigger_function/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete trigger function under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ trg_func__id = all_id["tfnid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(trg_func__id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py
new file mode 100644
index 0000000..ab05fe0
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_get.py
@@ -0,0 +1,61 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class TriggerFuncGetTestCase(LoginTestCase):
+ """ This class will fetch added trigger function under schema node. """
+
+ priority = 37
+
+ scenarios = [
+ # Fetching default URL for trigger function node.
+ ('Fetch Trigger Function Node URL',
+ dict(url='/browser/trigger_function/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch trigger function under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ trg_func__id = all_id["tfnid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(trg_func__id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py
new file mode 100644
index 0000000..a6431d7
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/test_trigger_func_put.py
@@ -0,0 +1,69 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class TriggerFuncPutTestCase(LoginTestCase):
+ """ This class will update new trigger function under schema node. """
+
+ priority = 38
+
+ scenarios = [
+ # Fetching default URL for trigger function node.
+ ('Fecth Trigger Function Node URL',
+ dict(url='/browser/trigger_function/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update trigger function under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ trg_func__id = all_id["tfnid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ data = \
+ {
+ "description": config_data
+ ['test_trigger_func_update_data']['test_comment'],
+ "id": trg_func__id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(trg_func__id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/__init__.py
new file mode 100644
index 0000000..ff11e3e
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/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 SequenceTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py
new file mode 100644
index 0000000..5cb7413
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_add.py
@@ -0,0 +1,97 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class SequenceAddTestCase(LoginTestCase):
+ """ This class will add new collation under schema node. """
+
+ priority = 56
+
+ scenarios = [
+ # Fetching default URL for sequence node.
+ ('Fetch sequence Node URL', dict(url='/browser/sequence/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add sequence under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ data = \
+ {
+ "cache": config_data['test_sequence_credentials']
+ ['test_cache'],
+ "cycled": config_data['test_sequence_credentials']
+ ['test_cycled'],
+ "increment": config_data['test_sequence_credentials']
+ ['test_increment'],
+ "maximum": config_data['test_sequence_credentials']
+ ['test_max_value'],
+ "minimum": config_data['test_sequence_credentials']
+ ['test_min_value'],
+ "name": config_data['test_sequence_credentials']
+ ['test_name'],
+ "relacl": config_data['test_sequence_credentials']
+ ['test_acl'],
+ "schema": config_data['test_sequence_credentials']
+ ['test_schema_name'],
+ "securities": config_data['test_sequence_credentials']
+ ['test_security'],
+ "seqowner": config_data['test_sequence_credentials']
+ ['test_owner'],
+ "start": config_data['test_sequence_credentials']
+ ['test_start_val']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ sequence_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["seid"].append(sequence_id)
+
+ sequence_output = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, sequence_output)
+ sequence_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py
new file mode 100644
index 0000000..f708a2b
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_delete.py
@@ -0,0 +1,73 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class SequenceDeleteTestCase(LoginTestCase):
+ """ This class will delete added sequence node under schema node. """
+
+ priority = 59
+
+ scenarios = [
+ # Fetching default URL for sequence node.
+ ('Fecth sequence Node URL', dict(url='/browser/sequence/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete added sequence under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ sequence_id = all_id["seid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(sequence_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception("No sequence node to delete!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(sequence_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py
new file mode 100644
index 0000000..15c064e
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_get.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class SequenceGetTestCase(LoginTestCase):
+ """ This class will add new collation under schema node. """
+
+ priority = 57
+
+ scenarios = [
+ # Fetching default URL for sequence node.
+ ('Fetch sequence Node URL', dict(url='/browser/sequence/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch added sequence under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ sequence_id = all_id["seid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(sequence_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.py
new file mode 100644
index 0000000..e786130
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/test_sequence_put.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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class SequenceUpdateTestCase(LoginTestCase):
+ """ This class will update new sequence node under schema node. """
+
+ priority = 58
+
+ scenarios = [
+ # Fetching default URL for sequence node.
+ ('Fetch sequence Node URL', dict(url='/browser/sequence/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update added sequence under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ sequence_id = all_id["seid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(sequence_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception("No sequence node to update!")
+
+ data =\
+ {
+ "comment": config_data['test_sequnce_update_data']
+ ['test_comment'],
+ "id": sequence_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(sequence_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/__init__.py
new file mode 100644
index 0000000..2450edb
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/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 TableTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py
new file mode 100644
index 0000000..2f1c375
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_add.py
@@ -0,0 +1,116 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class TableAddTestCase(LoginTestCase):
+ """ This class will add new collation under schema node. """
+
+ priority = 60
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+ data = \
+ {
+ "check_constraint": config_data
+ ['test_table_credentials']['test_constraint'],
+ "coll_inherits": config_data
+ ['test_table_credentials']['test_col_inherit'],
+ "columns": config_data
+ ['test_table_credentials']['test_columns'],
+ "exclude_constraint": config_data
+ ['test_table_credentials']['test_has_constraint'],
+ "fillfactor": config_data
+ ['test_table_credentials']['test_fillfactor'],
+ "foreign_key": config_data
+ ['test_table_credentials']['test_has_FK'],
+ "hastoasttable": config_data
+ ['test_table_credentials']['test_has_toast_tbl'],
+ "like_constraints": config_data
+ ['test_table_credentials']['test_like_constraint'],
+ "like_default_value": config_data
+ ['test_table_credentials']['test_like_default_value'],
+ "like_relation": config_data
+ ['test_table_credentials']['test_like_relation'],
+ "name": config_data
+ ['test_table_credentials']['test_name'],
+ "primary_key": config_data
+ ['test_table_credentials']['test_PK'],
+ "relacl": config_data
+ ['test_table_credentials']['test_acl'],
+ "relhasoids": config_data
+ ['test_table_credentials']['test_has_oid'],
+ "relowner": config_data
+ ['test_table_credentials']['test_owner'],
+ "schema": config_data
+ ['test_table_credentials']['test_schema'],
+ "seclabels": config_data
+ ['test_table_credentials']['test_sec_acl'],
+ "spcname": config_data
+ ['test_table_credentials']['test_tbscp'],
+ "unique_constraint": config_data
+ ['test_table_credentials']['test_unique_constraint'],
+ "vacuum_table": config_data
+ ['test_table_credentials']['test_vacuum_tbl'],
+ "vacuum_toast": config_data
+ ['test_table_credentials']['test_vacuum_toast']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ table_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["tid"].append(table_id)
+
+ table_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, table_output)
+ table_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_delete.py
new file mode 100644
index 0000000..4b8f345
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_delete.py
@@ -0,0 +1,73 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class TableDeleteTestCase(LoginTestCase):
+ """ This class will delete new table under schema node. """
+
+ priority = 97
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete added table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ table_id = all_id["tid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(table_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception("No Table to delete!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(table_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get.py
new file mode 100644
index 0000000..a98a3d3
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_get.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class TableGetTestCase(LoginTestCase):
+ """ This class will add new collation under schema node. """
+
+ priority = 61
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch added table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ table_id = all_id["tid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(table_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_put.py
new file mode 100644
index 0000000..867bb52
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/test_table_put.py
@@ -0,0 +1,79 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class TableUpdateTestCase(LoginTestCase):
+ """ This class will add new collation under schema node. """
+
+ priority = 62
+
+ scenarios = [
+ # Fetching default URL for table node.
+ ('Fecth table Node URL', dict(url='/browser/table/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch added table under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ table_id = all_id["tid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(table_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception ("No Table to update!")
+
+ data =\
+ {
+ "description": config_data['test_table_update_data']
+ ['test_comment'],
+ "id": table_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(table_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/__init__.py
new file mode 100644
index 0000000..3403f4f
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/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 SchemaTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_add.py
new file mode 100644
index 0000000..703983b
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_add.py
@@ -0,0 +1,90 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+import pickle
+import os
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class SchemaAddTestCase(LoginTestCase):
+ """ This class will add new schema under database node. """
+
+ priority = 23
+
+ scenarios = [
+ # Fetching default URL for schema node.
+ ('Check Schema Node URL', dict(url='/browser/schema/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add schema under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ data =\
+ {
+ "deffuncacl": config_data['test_schema_credentials']
+ ['test_func_acl'],
+ "defseqacl": config_data['test_schema_credentials']
+ ['test_seq_acl'],
+ "deftblacl": config_data['test_schema_credentials']
+ ['test_tbl_acl'],
+ "deftypeacl": config_data['test_schema_credentials']
+ ['test_type_acl'],
+ "name": config_data['test_schema_credentials']
+ ['test_name'],
+ "namespaceowner": config_data['test_schema_credentials']
+ ['test_owner'],
+ "nspacl": config_data['test_schema_credentials']
+ ['test_privilege'],
+ "seclabels": config_data['test_schema_credentials']
+ ['test_sec_label']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/', data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ schema_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["scid"].append(schema_id)
+
+ schema_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, schema_output)
+ schema_output.close()
+
+
+
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_delete.py
new file mode 100644
index 0000000..7f6cd73
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_delete.py
@@ -0,0 +1,59 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class SchemaDeleteTestCase(LoginTestCase):
+ """ This class will add new schema under database node. """
+
+ priority = 98
+
+ scenarios = [
+ # Fetching default URL for extension node.
+ ('Check Schema Node URL', dict(url='/browser/schema/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete schema under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) == 0:
+ raise Exception("No schema(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_get.py
new file mode 100644
index 0000000..f712f50
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_get.py
@@ -0,0 +1,44 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class SchemaGetTestCase(LoginTestCase):
+ """ This class will add new schema under database node. """
+
+ priority = 34
+
+ scenarios = [
+ # Fetching default URL for extension node.
+ ('Check Schema Node URL', dict(url='/browser/schema/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch schema under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
new file mode 100644
index 0000000..603c058
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
@@ -0,0 +1,60 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class SchemaPutTestCase(LoginTestCase):
+ """ This class will add new schema under database node. """
+
+ priority = 35
+
+ scenarios = [
+ # Fetching default URL for schema node.
+ ('Check Schema Node URL', dict(url='/browser/schema/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update schema under database node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ data =\
+ {
+ "deffuncacl": config_data["test_schema_update_data"]
+ ["test_func_acl"],
+ "defseqacl": config_data["test_schema_update_data"]
+ ["test_seq_acl"],
+ "deftblacl": config_data["test_schema_update_data"]
+ ["test_tbl_acl"],
+ "id": schema_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+ respdata = json.loads(put_response.data.decode())
+ self.assertTrue(respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/__init__.py
new file mode 100644
index 0000000..138c249
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/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 ViewTestGenerator(BaseTestGenerator):
+
+ def generate_tests(self):
+ return []
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_add.py
new file mode 100644
index 0000000..bee41c9
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_add.py
@@ -0,0 +1,102 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class MViewAddTestCase(LoginTestCase):
+ """ This class will add new view under schema node. """
+
+ priority = 67
+
+ scenarios = [
+ # Fetching default URL for materialized view node.
+ ('Fecth materialized view Node URL', dict(url='/browser/mview/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add materialized view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ data = \
+ {
+ "datacl": config_data
+ ['test_mview_credentials']['test_acl'],
+ "definition": config_data
+ ['test_mview_credentials']['test_definition'],
+ "fillfactor": config_data
+ ['test_mview_credentials']['test_fillfactor'],
+ "name": config_data
+ ['test_mview_credentials']['test_name'],
+ "owner": config_data
+ ['test_mview_credentials']['test_owner'],
+ "schema": config_data
+ ['test_mview_credentials']['test_schema_name'],
+ "seclabels": config_data
+ ['test_mview_credentials']['test_sec_label'],
+ "spcname": config_data
+ ['test_mview_credentials']['test_tbscp'],
+ "toast_autovacuum": config_data
+ ['test_mview_credentials']['test_toast_autovacuum'],
+ "toast_autovacuum_enabled": config_data
+ ['test_mview_credentials']['test_toast_autovacuum_enabled'],
+ "vacuum_table": config_data
+ ['test_mview_credentials']['test_vacuum_tbl'],
+ "vacuum_toast": config_data
+ ['test_mview_credentials']['test_vacuum_toast'],
+ "with_data": config_data
+ ['test_mview_credentials']['test_with_data']
+
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ mview_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["mvid"].append(mview_id)
+
+ mview_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, mview_output)
+ mview_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_delete.py
new file mode 100644
index 0000000..96371c7
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_delete.py
@@ -0,0 +1,75 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class MViewDeleteTestCase(LoginTestCase):
+ """ This class will delete new materialized view under schema node. """
+
+ priority = 70
+
+ scenarios = [
+ # Fetching default URL for materialized view node.
+ ('Fetch materialized view Node URL', dict(url='/browser/mview/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add materialized view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ mview_id = all_id["mvid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(mview_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception("No view node to delete!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(mview_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_get.py
new file mode 100644
index 0000000..a9ee00c
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_get.py
@@ -0,0 +1,60 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class MViewGetTestCase(LoginTestCase):
+ """ This class will fetch new materialized view under schema node. """
+
+ priority = 68
+
+ scenarios = [
+ # Fetching default URL for materialized view node.
+ ('Fetch materialized view Node URL', dict(url='/browser/mview/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add materialized view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ mview_id = all_id["mvid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj'
+ '/{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(mview_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_put.py
new file mode 100644
index 0000000..6a42037
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_mview_put.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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+
+
+class MViewPutTestCase(LoginTestCase):
+ """ This class will fetch new materialized view under schema node. """
+
+ priority = 69
+
+ scenarios = [
+ # Fetching default URL for materialized view node.
+ ('Fetch materialized view Node URL', dict(url='/browser/mview/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add materialized view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ mview_id = all_id["mvid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(mview_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception ("No view to update!")
+
+ data =\
+ {
+ "comment": config_data['test_view_update_data']
+ ['test_comment'],
+ "id": mview_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(mview_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_add.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_add.py
new file mode 100644
index 0000000..0b8da89
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_add.py
@@ -0,0 +1,89 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ViewAddTestCase(LoginTestCase):
+ """ This class will add new view under schema node. """
+
+ priority = 63
+
+ scenarios = [
+ # Fetching default URL for view node.
+ ('Fecth view Node URL', dict(url='/browser/view/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ data = \
+ {
+ "check_option": config_data
+ ['test_view_credentials']['test_check_options'],
+ "datacl": config_data
+ ['test_view_credentials']['test_acl'],
+ "definition": config_data
+ ['test_view_credentials']['test_definition'],
+ "name": config_data
+ ['test_view_credentials']['test_name'],
+ "owner": config_data
+ ['test_view_credentials']['test_owner'],
+ "schema": config_data
+ ['test_view_credentials']['test_schema_name'],
+ "seclabels": config_data
+ ['test_view_credentials']['test_sec_label']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id) +
+ '/' + str(schema_id) + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ view_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["vid"].append(view_id)
+
+ view_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, view_output)
+ view_output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_delete.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_delete.py
new file mode 100644
index 0000000..4cf8023
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_delete.py
@@ -0,0 +1,77 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ViewDeleteTestCase(LoginTestCase):
+ """ This class will update new view under schema node. """
+
+ priority = 66
+
+ scenarios = [
+ # Fetching default URL for view node.
+ ('Fecth view Node URL', dict(url='/browser/view/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ view_id = all_id["vid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(view_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception("No view node to delete!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) +
+ '/' + str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(view_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_get.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_get.py
new file mode 100644
index 0000000..ee597ab
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_get.py
@@ -0,0 +1,61 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ViewGetTestCase(LoginTestCase):
+ """ This class will fetch new view under schema node. """
+
+ priority = 64
+
+ scenarios = [
+ # Fetching default URL for view node.
+ ('Fetch view Node URL', dict(url='/browser/view/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ view_id = all_id["vid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(view_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_put.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_put.py
new file mode 100644
index 0000000..a838fce
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/test_view_put.py
@@ -0,0 +1,81 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+import json
+import pickle
+import os
+
+
+class ViewPutTestCase(LoginTestCase):
+ """ This class will update new view under schema node. """
+
+ priority = 65
+
+ scenarios = [
+ # Fetching default URL for view node.
+ ('Fecth view Node URL', dict(url='/browser/view/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update view under schema node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ schema_id = all_id["scid"][0]
+ view_id = all_id["vid"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con['data']["connected"]:
+
+ # Get schema id
+ response = self.tester.get('/browser/schema/obj/'
+ '{0}/{1}/{2}/{3}'.format
+ (srv_grp, server_id, db_id, schema_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ if len(respdata) != 0:
+
+ get_response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(view_id),
+ content_type='html/json')
+
+ get_respdata = json.loads(get_response.data.decode())
+
+ if len(get_respdata) == 0:
+ raise Exception ("No view to update!")
+
+ data =\
+ {
+ "comment": config_data['test_view_update_data']
+ ['test_comment'],
+ "id": view_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' +
+ str(db_id) + '/' +
+ str(schema_id) + '/' +
+ str(view_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/tests/__init__.py
new file mode 100644
index 0000000..acada61
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/tests/__init__.py
@@ -0,0 +1,6 @@
+from pgadmin.utils.route import BaseTestGenerator
+
+class DBGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return []
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_add.py b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_add.py
new file mode 100644
index 0000000..6e4c9ed
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_add.py
@@ -0,0 +1,101 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json, pickle, uuid, os
+from regression.test_utils import get_ids
+
+class DatabaseAddTestCase(LoginTestCase):
+ """
+ This class will check server group node present on the object browser's
+ tree node by response code.
+ """
+ priority = 8
+
+ scenarios = [
+ # Fetching default URL for database node.
+ ('Check Databases Node URL', dict(url='/browser/database/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add database under 1st server of tree node. """
+
+ srv_id = get_ids()
+
+ server_id = srv_id["sid"][0]
+ srv_grp = config_data['test_server_group']
+
+ response = self.tester.post('browser/server/connect/' + str(srv_grp) +
+ '/' + server_id,
+ data=dict(
+ password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
+
+ self.assertEquals(response.status_code, 200)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+
+ data = {
+ "datacl": config_data['test_add_database_data']
+ ['test_privileges_acl'],
+ "datconnlimit": config_data['test_add_database_data']
+ ['test_conn_limit'],
+ "datowner": config_data['test_add_database_data']
+ ['test_owner'],
+ "deffuncacl": config_data['test_add_database_data']
+ ['test_fun_acl'],
+ "defseqacl": config_data['test_add_database_data']
+ ['test_seq_acl'],
+ "deftblacl": config_data['test_add_database_data']
+ ['test_tbl_acl'],
+ "deftypeacl": config_data['test_add_database_data']
+ ['test_type_acl'],
+ "encoding": config_data['test_add_database_data']
+ ['test_encoding'],
+ "name": str(uuid.uuid4())[1:8],
+ "privileges": config_data['test_add_database_data']
+ ['test_privileges'],
+ "securities": config_data['test_add_database_data']
+ ['test_securities'],
+ "variables": config_data['test_add_database_data']
+ ['test_variables']
+ }
+
+ db_response = self.tester.post(self.url + str(srv_grp) + "/"
+ + server_id + "/",
+ data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(db_response.status_code, 200)
+
+ respdata = json.loads(db_response.data.decode())
+
+ db_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+
+ tol_server_id = pickle.load(exst_server_id)
+ pickle_id_dict = tol_server_id
+
+ pickle_id_dict["did"].append(db_id)
+
+ db_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, db_output)
+ db_output.close()
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py
new file mode 100644
index 0000000..26c5574
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py
@@ -0,0 +1,47 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_nodes import test_getnodes
+from regression.test_utils import get_ids
+
+
+class DatabaseDeleteTestCase(LoginTestCase):
+ """ This class will delete the database under last added server. """
+
+ priority = 99
+
+ scenarios = [
+ # Fetching default URL for database node.
+ ('Check Databases Node URL', dict(url='/browser/database/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete the database."""
+
+ all_id = get_ids()
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if len(db_con) == 0:
+ raise Exception("No database(s) to delete!!!")
+
+ response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id),
+ follow_redirects=True)
+
+ respdata = json.loads(response.data.decode())
+
+ self.assertTrue(respdata['success'], 1)
+
diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_get.py b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_get.py
new file mode 100644
index 0000000..34a6778
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_get.py
@@ -0,0 +1,43 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.test_nodes import test_getnodes
+from regression.test_utils import get_ids
+
+
+class DatabasesGetTestCase(LoginTestCase):
+ """
+ This class will fetch database added under last added server.
+ """
+ priority = 9
+
+ scenarios = [
+ # Fetching default URL for database node.
+ ('Check Databases Node URL', dict(url='/browser/database/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch added database. """
+
+ all_id = get_ids()
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ db_con = test_getnodes(node=self)
+
+ if db_con["info"] == "Database Connected.":
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id),
+ follow_redirects=True)
+
+ self.assertEquals(response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py
new file mode 100644
index 0000000..bb15e75
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_put.py
@@ -0,0 +1,49 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from regression.test_nodes import test_getnodes
+
+
+class DatabasesUpdateTestCase(LoginTestCase):
+ """
+ This class will update the database under last added server.
+ """
+ priority = 10
+
+ scenarios = [
+ # Fetching default URL for database node.
+ ('Check Databases Node', dict(url='/browser/database/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update the comments field of database."""
+
+ all_id = get_ids()
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+
+ test_getnodes(node=self)
+
+ srv_grp = config_data['test_server_group']
+
+ data = {"comments": config_data["test_db_update_data"]
+ ["test_comment"],
+ "id": db_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(db_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/roles/tests/__init__.py
new file mode 100644
index 0000000..4a11bf8
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/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 RoleGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py
new file mode 100644
index 0000000..6a2bb08
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py
@@ -0,0 +1,92 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json, pickle, uuid, os
+from regression.test_utils import get_ids
+
+
+class LoginRoleAddTestCase(LoginTestCase):
+ """ This class will add login role node under added server. """
+
+ priority = 12
+
+ scenarios = [
+ # Fetching default URL for roles node.
+ ('Check Role Node', dict(url='/browser/role/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add new role under 1st server of tree node. """
+
+ srv_id = get_ids()
+
+ server_id = srv_id["sid"][0]
+
+ srv_grp = config_data['test_server_group']
+
+ response = self.tester.post('browser/server/connect/' + str(srv_grp) +
+ '/' + server_id,
+ data=dict(
+ password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+
+ data = {
+ "rolcanlogin": config_data['test_lr_credentials']
+ ['test_can_login'],
+ "rolconnlimit": config_data['test_lr_credentials']
+ ['test_conn_limit'],
+ "rolcreaterole": config_data['test_lr_credentials']
+ ['test_create_role'],
+ "rolinherit": config_data['test_lr_credentials']
+ ['test_role_inherit'],
+ "rolmembership": config_data['test_lr_credentials']
+ ['test_role_membership'],
+ "rolname": str(uuid.uuid4())[1:8],
+ "rolpassword": config_data['test_lr_credentials']
+ ['test_lr_password'],
+ "rolvaliduntil": config_data['test_lr_credentials']
+ ['test_lr_validity'],
+ "seclabels": config_data['test_lr_credentials']
+ ['test_sec_lable'],
+ "variables": config_data['test_lr_credentials']
+ ['test_variable']
+ }
+
+ response = self.tester.post(self.url + str(srv_grp) + '/'
+ + server_id + '/', data=json.dumps(data),
+ content_type='html/json')
+
+ self.assertTrue(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ lr_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_server_id)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["lrid"].append(lr_id)
+
+ lr_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, lr_output)
+ lr_output.close()
+
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py
new file mode 100644
index 0000000..445fd7c
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py
@@ -0,0 +1,47 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from .test_role_func import test_getrole
+from regression.test_utils import get_ids
+
+
+class LoginRoleDeleteTestCase(LoginTestCase):
+ """ This class will delete added login role present under server node. """
+
+ priority = 14
+
+ scenarios = [
+ # Fetching default URL for roles node.
+ ('Check Role Node', dict(url='/browser/role/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete the role. """
+
+ all_id = get_ids()
+ server_id = all_id["sid"][0]
+ srv_grp = config_data['test_server_group']
+
+ respdata = test_getrole(node=self)
+
+ role_id = respdata['oid']
+
+ if len(respdata) == 0:
+ raise Exception("No roles(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(role_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_func.py b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_func.py
new file mode 100644
index 0000000..3e06b08
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_func.py
@@ -0,0 +1,48 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+import json
+from regression.test_utils import get_ids
+
+
+def test_getrole(node=None):
+
+ if not node:
+ return None
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ role_id = all_id["lrid"][0]
+
+ srv_grp = config_data['test_server_group']
+
+ response = node.tester.post('browser/server/connect/{0}/{1}'.format
+ (srv_grp, server_id),
+ data=dict(
+ password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+
+ response = node.tester.get('/browser/role/obj/{0}/{1}/{2}'.format
+ (srv_grp, server_id, role_id),
+ content_type='html/json')
+
+ respdata = json.loads(response.data.decode())
+
+ return respdata
+
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_get.py b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_get.py
new file mode 100644
index 0000000..636ce1c
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.utils import get_ids
+
+
+class LoginRoleGetTestCase(LoginTestCase):
+ """
+ This class will fetch login roles node present under the object browser's
+ tree node by response code.
+ """
+
+ priority = 13
+
+ scenarios = [
+ # Fetching default URL for roles node.
+ ('Check Role Node', dict(url='/browser/role/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will fetch added login role under tree node. """
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ role_id = all_id["lrid"][0]
+ srv_grp = config_data['test_server_group']
+
+ response = self.tester.post('browser/server/connect/' + str(srv_grp) +
+ '/' + server_id,
+ data=dict(
+ password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(role_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py
new file mode 100644
index 0000000..34879f4
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py
@@ -0,0 +1,51 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from .test_role_func import test_getrole
+from regression.test_utils import get_ids
+
+
+class LoginRolePutTestCase(LoginTestCase):
+ """This class update the comment field of login roles node."""
+
+ priority = 13
+
+ scenarios = [
+ # Fetching default URL for roles node.
+ ('Check Role Node', dict(url='/browser/role/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update the role's comment field."""
+
+ all_id = get_ids()
+
+ srv_grp = config_data['test_server_group']
+
+ server_id = all_id["sid"][0]
+
+ respdata = test_getrole(node=self)
+
+ role_id = respdata['oid']
+
+ data = {
+ "description": config_data["test_lr_update_data"]
+ ["test_comment"],
+ "oid": role_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(role_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/__init__.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/__init__.py
new file mode 100644
index 0000000..28fcc16
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/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 TblspaceGeneratorTestCase(BaseTestGenerator):
+
+ def runTest(self):
+ return
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py
new file mode 100644
index 0000000..c4d6bd6
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py
@@ -0,0 +1,83 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json, pickle, uuid, os
+from regression.test_utils import get_ids
+
+class TbspcAddTestCase(LoginTestCase):
+
+ """
+ This class will check server node present on the object browser's tree node by response code.
+ """
+ priority = 15
+
+ scenarios = [
+ # Fetching default URL for tablespace node.
+ ('Check Tablespace Node', dict(url='/browser/tablespace/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will add new tablespace under 1st server of tree node."""
+
+ srv_id = get_ids()
+
+ srv_grp = config_data['test_server_group']
+
+ server_id = srv_id["sid"][0]
+
+ response = self.tester.post('browser/server/connect/' + str(srv_grp) +
+ '/' + server_id,
+ data=dict(
+ password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+ data = \
+ {
+ "name": str(uuid.uuid4())[1:8],
+ "seclabels": config_data["test_tablespc_credentials"]
+ ["test_spc_seclable"],
+ "spcacl": config_data["test_tablespc_credentials"]
+ ["test_spc_acl"],
+ "spclocation": config_data["test_tablespc_credentials"]
+ ["test_spc_location"],
+ "spcoptions": config_data["test_tablespc_credentials"]
+ ["test_spc_opts"],
+ "spcuser": config_data["test_tablespc_credentials"]
+ ["test_spc_user"]
+ }
+#
+ response = self.tester.post(self.url + str(srv_grp) + '/'
+ + server_id + '/',
+ data=json.dumps(data),
+ content_type='html/json')
+ self.assertTrue(response.status_code, 200)
+ respdata = json.loads(response.data.decode())
+ tbspc_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_ids = open('/home/edb/Downloads/pgadmin4/web'
+ '/regression/''parent_id.pkl', 'rb')
+ all_id = pickle.load(exst_ids)
+ pickle_id_dict = all_id
+
+ pickle_id_dict["tsid"].append(tbspc_id)
+
+ spc_output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, spc_output)
+ spc_output.close()
+
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py
new file mode 100644
index 0000000..8674ba4
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py
@@ -0,0 +1,51 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+from .test_tbspc_func import test_gettblspc
+
+class TbspcDeleteTestCase(LoginTestCase):
+ """
+ This class will delete tablespace node present under the object browser's
+ tree node by response code.
+ """
+
+ priority = 18
+
+ scenarios = [
+ # Fetching default URL for tablespace node.
+ ('Check Tablespace Node', dict(url='/browser/tablespace/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will delete the added tablespace"""
+
+ all_id = get_ids()
+
+ srv_grp = config_data['test_server_group']
+
+ server_id = all_id["sid"][0]
+
+ respdata = test_gettblspc(node=self)
+
+ tbspc_id = respdata['oid']
+
+ if len(respdata) == 0:
+ raise Exception("No tablespace(s) to delete!!!")
+
+ del_response = self.tester.delete(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(tbspc_id),
+ follow_redirects=True)
+
+ del_respdata = json.loads(del_response.data.decode())
+
+ self.assertTrue(del_respdata['success'], 1)
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_func.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_func.py
new file mode 100644
index 0000000..2abcf8d
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_func.py
@@ -0,0 +1,45 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.test_utils import get_ids
+from regression.config import config_data
+import json
+
+
+def test_gettblspc(node=None):
+
+ if not node:
+ return None
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ tbspc_id = all_id["tsid"][0]
+
+ srv_grp = config_data['test_server_group']
+
+ response = node.tester.post('browser/server/connect/{0}/{1}'.format
+ (srv_grp, server_id),
+ data=dict(password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']), follow_redirects=True)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+
+ response = node.tester.get('/browser/tablespace/obj/{0}/{1}/{2}'.format
+ (srv_grp, server_id, tbspc_id),
+ content_type='html/json')
+
+ node.assertEquals(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+
+ return respdata
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py
new file mode 100644
index 0000000..0d85f46
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py
@@ -0,0 +1,57 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from regression.test_utils import get_ids
+
+
+class TbspcGetTestCase(LoginTestCase):
+ """
+ This class will fetch added tablespace under the object browser's
+ tree node by response code.
+ """
+ priority = 16
+
+ scenarios = [
+ # Fetching default URL for tablespace node.
+ ('Check Tablespace Node', dict(url='/browser/tablespace/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will get the added tablespace."""
+
+ all_id = get_ids()
+
+ srv_grp = config_data['test_server_group']
+
+ server_id = all_id["sid"][0]
+ tbspc_id = all_id["tsid"][0]
+
+ response = self.tester.post('browser/server/connect/' + str(srv_grp) +
+ '/' + server_id,
+ data=dict(
+ password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
+
+ srv_connect = json.loads(response.data.decode())
+
+ if srv_connect['data']['connected']:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(tbspc_id),
+ content_type='html/json')
+
+ self.assertEquals(response.status_code, 200)
+
+ respdata = json.loads(response.data.decode())
+ self.assertTrue(respdata['oid'], tbspc_id)
diff --git a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.py b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.py
new file mode 100644
index 0000000..59a38f3
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.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 regression.config import config_data
+from pgadmin.browser.tests.test_login import LoginTestCase
+import json
+from .test_tbspc_func import test_gettblspc
+from regression.test_utils import get_ids
+
+
+class TbspcUpdateTestCase(LoginTestCase):
+ """
+ This class will update comment field of added tablespace under the
+ object browser's tree node.
+ """
+
+ priority = 17
+
+ scenarios = [
+ # Fetching default URL for tablespace node.
+ ('Check Tablespace Node', dict(url='/browser/tablespace/obj/'))
+ ]
+
+ def runTest(self):
+ """ This function will update the added tablespace."""
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ srv_grp = config_data['test_server_group']
+
+ respdata = test_gettblspc(node=self)
+
+ tbspc_id = respdata['oid']
+
+ data = \
+ {
+ "description": config_data["test_lr_update_data"]
+ ["test_comment"],
+ "id": tbspc_id
+ }
+
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id) + '/' + str(tbspc_id),
+ data=json.dumps(data),
+ follow_redirects=True)
+
+ self.assertEquals(put_response.status_code, 200)
+
+
diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_server_add.py b/web/pgadmin/browser/server_groups/servers/tests/test_server_add.py
index 0af13d3..b722aeb 100644
--- a/web/pgadmin/browser/server_groups/servers/tests/test_server_add.py
+++ b/web/pgadmin/browser/server_groups/servers/tests/test_server_add.py
@@ -8,16 +8,14 @@
# ##########################################################################
import json
-
+import pickle
+import os
from pgadmin.browser.tests.test_login import LoginTestCase
from regression.config import config_data
class ServersAddTestCase(LoginTestCase):
- """
- This class will add the servers under default server group and verify with
- server's name.
- """
+ """ This class will add the servers under default server group. """
priority = 4
@@ -27,10 +25,31 @@ class ServersAddTestCase(LoginTestCase):
]
def runTest(self):
- """
- This function will add the server under default server group.
- Verify the added server with response code as well as server name.
- """
+ """ This function will add the server under default server group."""
+
+ # Storing parent id's into pickle dict
+ pickle_id_dict = {
+ "sid": [], #server
+ "did": [], #database
+ "lrid": [], #login role
+ "tsid": [], #tablspace
+ "cid": [], #cast
+ "eid": [], #extention
+ "lid": [12397], #language
+ "scid": [], #schema
+ "tfnid": [], #trigger function
+ "etid": [], #event trigger
+ "coid": [], #collation
+ "fid": [], #FDW
+ "doid": [], #Domain
+ "seid": [], #Sequence
+ "tid": [], #table
+ "vid": [], #view
+ "mvid": [], #mview
+ "fsid": [], #foreign server
+ "umid": [], #User mapping
+ "foid": [] #foreign table
+ }
srv_grp = config_data['test_server_group']
@@ -48,6 +67,20 @@ class ServersAddTestCase(LoginTestCase):
response = self.tester.post(url, data=json.dumps(data),
content_type='html/json')
+
self.assertTrue(response.status_code, 200)
- respdata = json.loads(response.data)
- self.assertTrue(respdata['node']['label'], srv['test_name'])
+ respdata = json.loads(response.data.decode())
+
+ server_id = respdata['node']['_id']
+
+ if os.path.isfile('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl'):
+ exst_server_id = open('/home/edb/Downloads/pgadmin4/web/'
+ 'regression/parent_id.pkl', 'rb')
+ pickle_id_dict = pickle.load(exst_server_id)
+
+ pickle_id_dict["sid"].append(server_id)
+ output = open('/home/edb/Downloads/pgadmin4/web/regression/'
+ 'parent_id.pkl', 'wb')
+ pickle.dump(pickle_id_dict, output)
+ output.close()
\ No newline at end of file
diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_server_delete.py b/web/pgadmin/browser/server_groups/servers/tests/test_server_delete.py
index 329d74f..a7dd101 100644
--- a/web/pgadmin/browser/server_groups/servers/tests/test_server_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/tests/test_server_delete.py
@@ -8,16 +8,13 @@
# ##################################################################
import json
-
from pgadmin.browser.tests.test_login import LoginTestCase
from regression.config import config_data
-class ServersDeleteTestCase(LoginTestCase):
- """
- This class will check server node present on the object browser's tree node
- by response code.
- """
+class ServerDeleteTestCase(LoginTestCase):
+ """ This class will delete the last server present under tree node."""
+
priority = 7
scenarios = [
@@ -26,32 +23,22 @@ class ServersDeleteTestCase(LoginTestCase):
]
def runTest(self):
- """
- This function will get all available servers under object browser
- and delete the servers using server id.
- """
+ """ This function will get all available servers under object browser
+ and delete the last server using server id."""
srv_grp = config_data['test_server_group']
- for srv in config_data['test_server_credentials']:
-
- data = {"name": srv['test_name'],
- "host": srv['test_host'],
- "port": srv['test_db_port'],
- "db": srv['test_maintenance_db'],
- "username": srv['test_db_username'],
- "role": "",
- "sslmode": srv['test_sslmode']}
+ url = self.url + str(srv_grp) + "/"
- url = self.url + str(srv_grp) + "/"
+ response = self.tester.get(url)
+ respdata = json.loads(response.data.decode())
- response = self.tester.get(url, data=json.dumps(data),
- content_type='html/json')
- self.assertTrue(response.status_code, 200)
- respdata = json.loads(response.data)
+ if len(respdata) == 0:
+ raise Exception("No server(s) to delete!!!")
- for server in respdata:
- response = self.tester.delete(url + json.dumps(server['id']))
- self.assertTrue(response.status_code, 200)
- respdata = json.loads(response.data)
- self.assertTrue(respdata['success'], 1)
+ # delete last server
+ server = respdata[-1]
+ response = self.tester.delete(url + str(server['id']))
+ self.assertTrue(response.status_code, 200)
+ respdata = json.loads(response.data.decode())
+ self.assertTrue(respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_server_get.py b/web/pgadmin/browser/server_groups/servers/tests/test_server_get.py
index 050843e..163fef3 100644
--- a/web/pgadmin/browser/server_groups/servers/tests/test_server_get.py
+++ b/web/pgadmin/browser/server_groups/servers/tests/test_server_get.py
@@ -7,15 +7,14 @@
#
# ##########################################################################
-import json
-
from pgadmin.browser.tests.test_login import LoginTestCase
from regression.config import config_data
+from regression.test_utils import get_ids
class ServersGetTestCase(LoginTestCase):
"""
- This class will check server node present on the object browser's tree node
+ This class will fetch added servers under default server group
by response code.
"""
@@ -27,23 +26,16 @@ class ServersGetTestCase(LoginTestCase):
]
def runTest(self):
- """
- This function will get all available servers present under
- object browser.
- """
+ """ This function will fetch the added servers to object browser. """
+ all_id = get_ids()
+ server_id = all_id["sid"]
srv_grp = config_data['test_server_group']
- for srv in config_data['test_server_credentials']:
- data = {"name": srv['test_name'],
- "host": srv['test_host'],
- "port": srv['test_db_port'],
- "db": srv['test_maintenance_db'],
- "username": srv['test_db_username'],
- "role": "",
- "sslmode": srv['test_sslmode']}
-
- url = self.url + str(srv_grp) + "/"
- response = self.tester.get(url, data=json.dumps(data),
+ for srv in server_id:
+
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(srv),
content_type='html/json')
- self.assertTrue(response.status_code, 200)
+
+ self.assertEquals(response.status_code, 200)
diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_server_put.py b/web/pgadmin/browser/server_groups/servers/tests/test_server_put.py
index 306bb03..0daac73 100644
--- a/web/pgadmin/browser/server_groups/servers/tests/test_server_put.py
+++ b/web/pgadmin/browser/server_groups/servers/tests/test_server_put.py
@@ -8,16 +8,13 @@
# ##########################################################################
import json
-
from pgadmin.browser.tests.test_login import LoginTestCase
from regression.config import config_data
+from regression.test_utils import get_ids
-class ServersUpdateTestCase(LoginTestCase):
- """
- This class will check server node present on the object browser's tree node
- by response code.
- """
+class ServerUpdateTestCase(LoginTestCase):
+ """ This class will update server's comment field. """
priority = 6
@@ -27,39 +24,40 @@ class ServersUpdateTestCase(LoginTestCase):
]
def runTest(self):
- """
- This function will edit and update the server's comment field
- by the server id.
- """
+ """ This function will update the server's comment field. """
+ all_id = get_ids()
+ server_id = all_id["sid"][0]
srv_grp = config_data['test_server_group']
- for srv in config_data['test_server_credentials']:
+ response = self.tester.get(self.url + str(srv_grp) + '/' +
+ str(server_id),
+ follow_redirects=True)
- data = {"name": srv['test_name'],
- "host": srv['test_host'],
- "port": srv['test_db_port'],
- "db": srv['test_maintenance_db'],
- "username": srv['test_db_username'],
- "role": "",
- "sslmode": srv['test_sslmode']}
+ con_response = self.tester.post('browser/server/connect/{0}/{1}'.format
+ (srv_grp, server_id),
+ data=dict(password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']),
+ follow_redirects=True)
- url = self.url + str(srv_grp) + "/"
+ srv_con = json.loads(con_response.data.decode())
- response = self.tester.get(url, data=json.dumps(data),
- content_type='html/json')
+ if len(srv_con) == 0:
+ raise Exception("No Server(s) connected to update!!!")
- self.assertTrue(response.status_code, 200)
- respdata = json.loads(response.data)
+ data = \
+ {
+ "comment": config_data
+ ['test_server_update_data']['test_comment'],
+ "id": server_id
+ }
- for server in respdata:
+ put_response = self.tester.put(self.url + str(srv_grp) + '/' +
+ str(server_id), data=json.dumps(data),
+ content_type='html/json')
- url = self.url + str(srv_grp) + "/" + json.dumps(server['id'])
+ self.assertEquals(put_response.status_code, 200)
- for server in config_data['test_server_update_data']:
- data = {"comment": server['test_comment']}
- response = self.tester.put(url, data=json.dumps(data),
- content_type='html/json')
- self.assertTrue(response.status_code, 200)
- respdata = json.loads(response.data)
- self.assertTrue(respdata['success'], 1)
+ respdata = json.loads(put_response.data.decode())
+ self.assertTrue(respdata['success'], 1)
diff --git a/web/pgadmin/browser/server_groups/tests/test_sg_get.py b/web/pgadmin/browser/server_groups/tests/test_sg_get.py
new file mode 100644
index 0000000..c552d8e
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/tests/test_sg_get.py
@@ -0,0 +1,36 @@
+###########################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+###########################################################################
+
+import json
+from pgadmin.browser.tests.test_login import LoginTestCase
+from regression.config import config_data
+
+
+class SgGetTestCase(LoginTestCase):
+ """
+ This class will check available server groups in pgAdmin.
+ """
+
+ priority = 3
+
+ scenarios = [
+ # Fetching the default url for server group node
+ ('Check Server Group Node', dict(url='/browser/server-group/obj/'))
+ ]
+
+ def runTest(self):
+ """This function will check available server groups."""
+
+ srv_grp = config_data['test_server_group']
+
+ response = self.tester.get(self.url + str(srv_grp),
+ content_type='html/json')
+ self.assertEquals(response.status_code, 200)
+ respdata = json.loads(response.data.decode())
+ self.assertTrue(respdata['id'], srv_grp)
diff --git a/web/pgadmin/browser/tests/test_login.py b/web/pgadmin/browser/tests/test_login.py
index 7c2b796..d272a63 100644
--- a/web/pgadmin/browser/tests/test_login.py
+++ b/web/pgadmin/browser/tests/test_login.py
@@ -8,7 +8,6 @@
##########################################################################
import uuid
-
from pgadmin.utils.route import BaseTestGenerator
from regression.config import config_data
@@ -67,7 +66,9 @@ class LoginTestCase(BaseTestGenerator):
['test_login_username']),
password=(config_data['pgAdmin4_login_credentials']
['test_login_password']),
- respdata='You are currently running version'))
+ respdata='Gravatar image for %s' %
+ config_data['pgAdmin4_login_credentials']
+ ['test_login_username']))
]
def runTest(self):
@@ -76,4 +77,4 @@ class LoginTestCase(BaseTestGenerator):
response = self.tester.post('/login', data=dict(
email=self.email, password=self.password),
follow_redirects=True)
- self.assertIn(self.respdata, response.data)
+ self.assertIn(self.respdata, response.data.decode('utf8'))
diff --git a/web/pgadmin/utils/route.py b/web/pgadmin/utils/route.py
index 1ff41de..3d41e0f 100644
--- a/web/pgadmin/utils/route.py
+++ b/web/pgadmin/utils/route.py
@@ -9,6 +9,8 @@
from abc import ABCMeta, abstractmethod
import unittest
+from importlib import import_module
+from werkzeug.utils import find_modules
class TestsGeneratorRegistry(ABCMeta):
@@ -48,18 +50,18 @@ class TestsGeneratorRegistry(ABCMeta):
cls.registry = dict()
- from importlib import import_module
- from werkzeug.utils import find_modules
-
for module_name in find_modules(pkg, False, True):
- module = import_module(module_name)
-
+ try:
+ module = import_module(module_name)
+ except ImportError:
+ pass
import six
@six.add_metaclass(TestsGeneratorRegistry)
class BaseTestGenerator(unittest.TestCase):
+
# Defining abstract method which will override by individual testcase.
@abstractmethod
def runTest(self):
diff --git a/web/regression/parent_id.pkl b/web/regression/parent_id.pkl
new file mode 100644
index 0000000..7227444
Binary files /dev/null and b/web/regression/parent_id.pkl differ
diff --git a/web/regression/test_config.json b/web/regression/test_config.json
new file mode 100644
index 0000000..2f0d09f
--- /dev/null
+++ b/web/regression/test_config.json
@@ -0,0 +1,910 @@
+{
+ "pgAdmin4_login_credentials":
+ {
+ "test_new_password" : "newpass",
+ "test_login_password" : "test123",
+ "test_login_username" : "[email protected]"
+ },
+
+
+ "test_server_group" : 1,
+
+ "test_server_credentials":
+ [{
+ "test_name" : "PG9.5",
+ "test_db_username" : "postgres",
+ "test_host" : "localhost",
+ "test_db_password" : "edb",
+ "test_db_port" : 5433,
+ "test_maintenance_db" : "postgres",
+ "test_sslmode" :"prefer"
+ },
+ {
+ "test_name" : "PPAS9.4",
+ "test_db_username" : "enterprisedb",
+ "test_host" : "localhost",
+ "test_db_password" : "edb",
+ "test_db_port" : 5444,
+ "test_maintenance_db" : "edb",
+ "test_sslmode" :"prefer"
+ }],
+
+ "test_server_update_data":
+ {
+ "test_comment": "This is test update comment"
+ },
+
+ "test_add_database_data": {
+ "test_privileges_acl": [
+ {
+ "grantee": "postgres",
+ "grantor": "postgres",
+ "privileges": [
+ {
+ "privilege_type": "C",
+ "privilege": true,
+ "with_grant": true
+ },
+ {
+ "privilege_type": "T",
+ "privilege": true,
+ "with_grant": false
+ }
+ ]
+ }
+ ],
+ "test_conn_limit": -1,
+ "test_owner": "postgres",
+ "test_fun_acl": [
+ {
+ "grantee": "postgres",
+ "grantor": "postgres",
+ "privileges": [
+ {
+ "privilege_type": "X",
+ "privilege": true,
+ "with_grant": false
+ }
+ ]
+ }
+ ],
+ "test_seq_acl": [
+ {
+ "grantee": "postgres",
+ "grantor": "postgres",
+ "privileges": [
+ {
+ "privilege_type": "r",
+ "privilege": true,
+ "with_grant": false
+ },
+ {
+ "privilege_type": "w",
+ "privilege": true,
+ "with_grant": false
+ },
+ {
+ "privilege_type": "U",
+ "privilege": true,
+ "with_grant": false
+ }
+ ]
+ }
+ ],
+ "test_tbl_acl": [
+ {
+ "grantee": "postgres",
+ "grantor": "postgres",
+ "privileges": [
+ {
+ "privilege_type": "a",
+ "privilege": true,
+ "with_grant": true
+ },
+ {
+ "privilege_type": "r",
+ "privilege": true,
+ "with_grant": false
+ }
+ ]
+ }
+ ],
+ "test_type_acl": [
+ {
+ "grantee": "postgres",
+ "grantor": "postgres",
+ "privileges": [
+ {
+ "privilege_type": "U",
+ "privilege": true,
+ "with_grant": false
+ }
+ ]
+ }
+ ],
+ "test_encoding": "UTF8",
+ "test_name": "test_db_automation",
+ "test_privileges": [],
+ "test_securities": [],
+ "test_variables": []
+ },
+
+ "test_db_update_data":
+ {
+ "test_comment": "This is db update comment"
+ },
+
+ "test_lr_credentials":
+ {
+ "test_can_login": "true",
+ "test_conn_limit": -1,
+ "test_create_role": "true",
+ "test_role_inherit": "true",
+ "test_role_membership": [],
+ "test_lr_name": "testlrg1",
+ "test_lr_password": "edb",
+ "test_lr_validity": "12/27/2016",
+ "test_sec_lable": [],
+ "test_variable":[
+ {"name":"work_mem",
+ "database":"postgres",
+ "value":65
+ }
+ ]
+ },
+
+ "test_lr_update_data":
+ {
+ "test_comment": "This is login role update comment"
+ },
+
+ "test_tablespc_credentials":
+ {
+ "test_tblspace_name": "test_tablespace",
+ "test_spc_seclable": [],
+ "test_spc_acl": [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":[
+ {
+ "privilege_type":"C",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_spc_location": "/opt/PostgreSQL/9.5/data",
+ "test_spc_opts": [],
+ "test_spc_user": "postgres"
+ },
+
+ "test_tbspc_update_data":
+ {
+ "test_comment": "This is tablespace update comment"
+ },
+
+ "test_casts_credentials":
+ {
+ "test_cast_context": "IMPLICIT",
+ "test_encoding": "UTF8",
+ "test_name": "money->bigint",
+ "test_source_type": "money",
+ "test_target_type": "bigint"
+ },
+
+ "test_cast_update_data":
+ {
+ "test_comment": "This is cast update comment"
+ },
+
+ "test_extension_credentials":
+ {
+ "test_name": "postgres_fdw",
+ "test_relocate": true,
+ "test_schema": "public",
+ "test_version": "1.0"
+ },
+
+ "test_extension_update_data":
+ {
+ "test_schema": "test1"
+ },
+
+ "test_language_update_data":
+ {
+ "test_comment": "This is language update comment"
+ },
+
+ "test_schema_credentials":
+ {
+ "test_func_acl": [],
+ "test_seq_acl": [],
+ "test_tbl_acl": [],
+ "test_type_acl": [],
+ "test_name": "test_schema",
+ "test_owner": "postgres",
+ "test_privilege":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"C",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"U",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_sec_label": []
+ },
+
+ "test_schema_update_data":
+ {
+ "test_tbl_acl":
+ {
+ "added":
+ [
+ {
+ "grantee": "public",
+ "grantor": "postgres",
+ "privileges":
+ [
+ {
+ "privilege_type": "D",
+ "privilege": true,
+ "with_grant": false
+ },
+ {
+ "privilege_type": "x",
+ "privilege": true,
+ "with_grant": false
+ }
+ ]
+ }
+ ]
+ },
+ "test_func_acl":
+ {
+ "added":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"X",
+ "privilege":true,
+ "with_grant":true
+ }
+ ]
+ }
+ ]
+ },
+ "test_seq_acl":
+ {
+ "added":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"r",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"w",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"U",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ]
+ }
+ },
+
+ "test_trigger_function_credentials":
+ {
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"X",
+ "privilege":true,
+ "with_grant":true
+ }
+ ]
+ }
+ ],
+ "test_args": [],
+ "test_fun_owner": "postgres",
+ "test_language": "plpgsql",
+ "test_name": "test_abort_any_command",
+ "test_options": [],
+ "test_probe": "$libdir/",
+ "test_leak_proof": true,
+ "test_namespace": 2200,
+ "test_type": "event_trigger",
+ "test_sec_def": true,
+ "test_code": "BEGIN RAISE EXCEPTION 'command % is disabled', tg_tag; END;",
+ "test_volitile": "s",
+ "test_sec_label": [],
+ "test_Variable":
+ [
+ {
+ "name":"enable_sort",
+ "value":true
+ }
+ ]
+ },
+
+ "test_trigger_func_update_data":
+ {
+ "test_comment": "This is trigger function update comment"
+ },
+
+ "test_event_trigger_credentials":
+ {
+ "test_enable": "O",
+ "test_event_func": "test_schema.test_abort_any_command",
+ "test_event_name": "DDL_COMMAND_END",
+ "test_event_owner": "postgres",
+ "test_name": "test_event_trg",
+ "test_provider": []
+ },
+
+ "test_event_trigger_update_data":
+ {
+ "test_comment": "This is event trigger update comment"
+ },
+
+ "test_FDW_credentials":
+ {
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"U",
+ "privilege":true,
+ "with_grant":true
+ }
+ ]
+ }
+ ],
+
+ "test_handler": "postgres_fdw_handler",
+ "test_options": [],
+ "test_owner": "postgres",
+ "test_validator": "postgresql_fdw_validator",
+ "test_name": "test_fdw"
+ },
+
+ "test_FDW_update_data":
+ {
+ "test_comment": "This is FDW update comment"
+ },
+
+ "test_collation_credentials":
+ {
+ "test_copy_collation": "pg_catalog.\"POSIX\"",
+ "test_name": "test_collation",
+ "test_owner": "postgres",
+ "test_schema": "test_schema"
+ },
+
+ "test_collation_update_data":
+ {
+ "test_comment": "This is collation update comment"
+ },
+
+
+ "test_domain_data":
+ {
+ "test_schema": "test_schema",
+ "test_basetype": "character",
+ "test_collation": "pg_catalog.\"en_AG\"",
+ "test_constraints":
+ [
+ {
+ "conname":"num",
+ "convalidated":true
+ }
+ ],
+ "test_lenght": true,
+ "test_max_value": 2147483647,
+ "test_min_value": 1,
+ "test_name": "test_domain",
+ "test_owner": "postgres",
+ "test_security": [],
+ "test_defalt_type": "1",
+ "test_type_len": "10"
+ },
+
+ "test_domain_update_data":
+ {
+ "test_comment": "This is domain update comment"
+ },
+
+ "test_sequence_credentials":
+ {
+ "test_cache": "1",
+ "test_cycled": true,
+ "test_increment": "1",
+ "test_max_value": "100000",
+ "test_min_value": "1",
+ "test_name": "test_empno",
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"r",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"w",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"U",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_schema_name": "test_schema",
+ "test_security": [],
+ "test_owner": "postgres",
+ "test_start_val": "100"
+ },
+
+ "test_sequnce_update_data":
+ {
+ "test_comment": "This is sequence update comment"
+ },
+
+ "test_table_credentials":
+ {
+ "test_constraint": [],
+ "test_col_inherit": "[]",
+ "test_columns":
+ [
+ {
+ "name":"empno",
+ "cltype":"numeric",
+ "attacl":[],
+ "is_primary_key":false,
+ "attoptions":[],
+ "seclabels":[]
+ },
+ {
+ "name":"empname",
+ "cltype":"character[]",
+ "attacl":[],
+ "is_primary_key":false,
+ "attoptions":[],
+ "seclabels":[]
+ },
+ {"name":"DOJ",
+ "cltype":"date[]",
+ "attacl":[],
+ "is_primary_key":false,
+ "attoptions":[],
+ "seclabels":[]
+ }
+ ],
+ "test_has_constraint": [],
+ "test_fillfactor": "11",
+ "test_has_FK": [],
+ "test_has_toast_tbl": true,
+ "test_like_constraint": true,
+ "test_like_default_value": true,
+ "test_like_relation": "pg_catalog.pg_tables",
+ "test_name": "test_emp",
+ "test_PK": [],
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"a",
+ "privilege":true,
+ "with_grant":true
+ },
+ {
+ "privilege_type":"r",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"w",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_has_oid": true,
+ "test_owner": "postgres",
+ "test_schema": "test_schema",
+ "test_sec_acl": [],
+ "test_tbscp": "pg_default",
+ "test_unique_constraint": [],
+ "test_vacuum_tbl":
+ [
+ {
+ "name":"autovacuum_analyze_scale_factor"
+ },
+ {
+ "name":"autovacuum_analyze_threshold"
+ },
+ {
+ "name":"autovacuum_freeze_max_age"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_delay"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_limit"
+ },
+ {
+ "name":"autovacuum_vacuum_scale_factor"
+ },
+ {
+ "name":"autovacuum_vacuum_threshold"
+ },
+ {
+ "name":"autovacuum_freeze_min_age"
+ },
+ {
+ "name":"autovacuum_freeze_table_age"
+ }
+ ],
+
+ "test_vacuum_toast":
+ [
+ {
+ "name":"autovacuum_freeze_max_age"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_delay"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_limit"
+ },
+ {
+ "name":"autovacuum_vacuum_scale_factor"
+ },
+ {
+ "name":"autovacuum_vacuum_threshold"
+ },
+ {
+ "name":"autovacuum_freeze_min_age"
+ },
+ {
+ "name":"autovacuum_freeze_table_age"
+ }
+ ]
+
+ },
+
+ "test_table_update_data":
+ {
+ "test_comment": "This is table update comment"
+ },
+
+ "test_view_credentials":
+ {
+ "test_check_options": "local",
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"a",
+ "privilege":true,
+ "with_grant":true
+ },
+ {
+ "privilege_type":"r",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_definition": "select test_emp.empname from test_schema.test_emp;",
+ "test_name": "test_view",
+ "test_owner": "postgres",
+ "test_schema_name": "test_schema",
+ "test_sec_label": []
+ },
+
+ "test_view_update_data":
+ {
+ "test_comment": "This is view update comment"
+ },
+
+ "test_mview_credentials":
+ {
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"a",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_definition": "select test_emp.empname from test_schema.test_emp where test_emp.empno = 1;",
+ "test_fillfactor": "11",
+ "test_name": "test_mview",
+ "test_owner": "postgres",
+ "test_schema_name": "test_schema",
+ "test_sec_label": [],
+ "test_tbscp": "pg_default",
+ "test_toast_autovacuum": true,
+ "test_toast_autovacuum_enabled": false,
+ "test_vacuum_tbl":
+ [
+ {
+ "name":"autovacuum_analyze_scale_factor"
+ },
+ {
+ "name":"autovacuum_analyze_threshold"
+ },
+ {
+ "name":"autovacuum_freeze_max_age"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_delay"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_limit"
+ },
+ {
+ "name":"autovacuum_vacuum_scale_factor"
+ },
+ {
+ "name":"autovacuum_vacuum_threshold"
+ },
+ {
+ "name":"autovacuum_freeze_min_age"
+ },
+ {
+ "name":"autovacuum_freeze_table_age"
+ }
+ ],
+ "test_vacuum_toast":
+ [
+ {
+ "name":"autovacuum_freeze_max_age"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_delay"
+ },
+ {
+ "name":"autovacuum_vacuum_cost_limit"
+ },
+ {
+ "name":"autovacuum_vacuum_scale_factor"
+ },
+ {
+ "name":"autovacuum_vacuum_threshold"
+ },
+ {
+ "name":"autovacuum_freeze_min_age"
+ },
+ {
+ "name":"autovacuum_freeze_table_age"
+ }
+ ],
+
+ "test_with_data": true
+ },
+
+ "test_mview_update_data":
+ {
+ "test_comment": "This is materialized view update comment"
+ },
+
+ "test_foreign_server_credentials":
+ {
+ "test_fsr_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"U",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+
+ "test_fsr_optns":
+ [
+ {
+ "fsrvoption":"host",
+ "fsrvvalue":"localhost"
+ },
+ {
+ "fsrvoption":"port",
+ "fsrvvalue":"5433"
+ },
+ {
+ "fsrvoption":"dbname",
+ "fsrvvalue":"postgres"
+ }
+ ],
+ "test_fsr_owner": "postgres",
+ "test_name": "test_foreign_server"
+ },
+
+ "test_FRS_update_data":
+ {
+ "test_comment": "This is foreign server update comment"
+ },
+
+ "test_user_mapping_credentials":
+ {
+ "test_name": "postgres",
+ "test_option": [],
+ "test_options":
+ [
+ {
+ "umoption":"user",
+ "umvalue":"postgres"
+ },
+ {
+ "umoption":"password",
+ "umvalue":"edb"
+ }
+ ]
+ },
+
+ "test_user_mapping_update_data":
+ {
+ "test_options":
+ {
+ "changed":
+ [
+ {"umoption":"password",
+ "umvalue":"edb1"
+ }
+ ]
+ }
+ },
+
+ "test_foreign_table_credentials":
+ {
+ "test_acl":
+ [
+ {
+ "grantee":"postgres",
+ "grantor":"postgres",
+ "privileges":
+ [
+ {
+ "privilege_type":"a",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"r",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"w",
+ "privilege":true,
+ "with_grant":false
+ },
+ {
+ "privilege_type":"x",
+ "privilege":true,
+ "with_grant":false
+ }
+ ]
+ }
+ ],
+ "test_schema_name": "test_schema",
+ "test_column":
+ [
+ {
+ "attname":"enme",
+ "datatype":"text",
+ "attnotnull":true,
+ "collname":"pg_catalog.\"default\"",
+ "is_tlength":false,
+ "is_precision":false
+ }
+ ],
+ "test_constraints": [],
+ "test_options": [],
+ "test_frs_name": "test_foreign_server",
+ "test_name": "test_ft",
+ "test_owner": "postgres",
+ "test_rel_acl": [],
+ "test_sec_lable": [],
+ "test_str_acl": []
+ },
+
+ "test_FT_update_data":
+ {
+ "test_comment": "This is foreign table update comment"
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/web/regression/test_nodes.py b/web/regression/test_nodes.py
new file mode 100644
index 0000000..9877a04
--- /dev/null
+++ b/web/regression/test_nodes.py
@@ -0,0 +1,40 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+from regression.config import config_data
+import json
+from regression.test_utils import get_ids
+
+
+def test_getnodes(node=None):
+ # Connect to server and database.
+
+ if not node:
+ return None
+
+ all_id = get_ids()
+
+ server_id = all_id["sid"][0]
+ db_id = all_id["did"][0]
+ srv_grp = config_data['test_server_group']
+
+ response = node.tester.post('browser/server/connect/{0}/{1}'.format
+ (srv_grp, server_id),
+ data=dict(password=config_data
+ ['test_server_credentials'][0]
+ ['test_db_password']), follow_redirects=True)
+
+ con_response = node.tester.post('browser/database/connect/'
+ '{0}/{1}/{2}'.format
+ (srv_grp, server_id, db_id),
+ follow_redirects=True)
+
+ db_con = json.loads(con_response.data.decode())
+
+ return db_con
diff --git a/web/regression/test_utils.py b/web/regression/test_utils.py
new file mode 100644
index 0000000..abc06d0
--- /dev/null
+++ b/web/regression/test_utils.py
@@ -0,0 +1,19 @@
+# #################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2016, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+# ##################################################################
+
+import pickle
+
+
+def get_ids(url='/home/edb/Downloads/pgadmin4/web/regression/parent_id.pkl'):
+ # This function will read parent nodes id's and return it.
+
+ output = open(url, 'rb')
+ ids = pickle.load(output)
+ output.close()
+ return ids
\ No newline at end of file
diff --git a/web/regression/testsuite.py b/web/regression/testsuite.py
index 9ec7ffe..6d8e074 100644
--- a/web/regression/testsuite.py
+++ b/web/regression/testsuite.py
@@ -9,10 +9,12 @@
""" This file collect all modules/files present in tests directory and add
them to TestSuite. """
-
+from __future__ import print_function
import os
import sys
import unittest
+import operator
+import logging
from testscenarios.scenarios import generate_scenarios
# We need to include the root directory in sys.path to ensure that we can
@@ -44,6 +46,21 @@ TestsGeneratorRegistry.load_generators('pgadmin')
# application. We can trigger test request to the application.
test_client = app.test_client()
+class StreamToLogger(object):
+ """
+ Fake file-like stream object that redirects writes to a logger instance.
+ """
+ def __init__(self, logger, log_level=logging.INFO):
+ self.logger = logger
+ self.log_level = log_level
+ self.linebuf = ''
+
+ def write(self, buf):
+ for line in buf.rstrip().splitlines():
+ self.logger.log(self.log_level, line.rstrip())
+
+ def flush(self):
+ pass
def suite():
""" Defining test suite which will execute all the testcases present in
@@ -58,6 +75,8 @@ def suite():
modules.insert(gen.priority, gen)
+ modules.sort(key=operator.attrgetter('priority'))
+
for m in modules:
obj = m()
obj.setTestClient(test_client)
@@ -66,7 +85,26 @@ def suite():
return pgadmin_suite
-
if __name__ == '__main__':
+
+ print("Please check output in file: logger.log placed at "
+ ".../pgadmin4/web/regression")
+
+ logging.basicConfig(level=logging.DEBUG,
+ format='%(asctime)s:%(levelname)s:%(name)s:%(message)s',
+ filename="logger.log",
+ filemode='w'
+ )
+
+ stdout_logger = logging.getLogger('STDOUT')
+ sl = StreamToLogger(stdout_logger, logging.INFO)
+ sys.stdout = sl
+
+ stderr_logger = logging.getLogger('STDERR')
+ sl = StreamToLogger(stderr_logger, logging.ERROR)
+ sys.stderr = sl
+
suite = suite()
- tests = unittest.TextTestRunner(descriptions=True, verbosity=2).run(suite)
+ tests = unittest.TextTestRunner(descriptions=True, verbosity=2,
+ stream=sys.stdout).run(suite)
+ os.remove("parent_id.pkl")
view thread (27+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected]
Subject: Re: pgAdmin IV API test cases patch
In-Reply-To: <CAKmZXFQ2Hj1-OZpSGFEBB-vOypQ_=1b4Yr_VytZ-E1=CBw9Yhw@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox