mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Add regression tests for Foreignb Tables.
This commit is contained in:
parent
8b91babdc2
commit
540c389d92
@ -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 ForeignTableGeneratorTestCase(BaseTestGenerator):
|
||||
|
||||
def runTest(self):
|
||||
return []
|
@ -0,0 +1,100 @@
|
||||
# #################################################################
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
# ##################################################################
|
||||
from __future__ import print_function
|
||||
import uuid
|
||||
import json
|
||||
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers.\
|
||||
tests import utils as fdw_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers.\
|
||||
foreign_servers.tests import utils as fsrv_utils
|
||||
from regression import parent_node_dict
|
||||
from regression import test_utils as utils
|
||||
|
||||
|
||||
class ForeignTableAddTestCase(BaseTestGenerator):
|
||||
"""
|
||||
This class will add foreign table under database node.
|
||||
"""
|
||||
|
||||
scenarios = [
|
||||
# Fetching default URL for foreign server node.
|
||||
('Check foreign table Node', dict(url='/browser/foreign-table/obj/'))
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
""" This function will create foreign data wrapper and
|
||||
foreign server. """
|
||||
|
||||
self.schema_data = parent_node_dict['schema'][-1]
|
||||
self.server_id = self.schema_data['server_id']
|
||||
self.db_id = self.schema_data['db_id']
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
self.schema_name = self.schema_data['schema_name']
|
||||
self.schema_id = self.schema_data['schema_id']
|
||||
self.fdw_name = "fdw_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.fsrv_name = "fsrv_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.fdw_id = fdw_utils.create_fdw(self.server, self.db_name,
|
||||
self.fdw_name)
|
||||
self.fsrv_id = fsrv_utils.create_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name, self.fdw_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will add foreign table under test database."""
|
||||
|
||||
db_con = database_utils.connect_database(self,
|
||||
utils.SERVER_GROUP,
|
||||
self.server_id,
|
||||
self.db_id)
|
||||
|
||||
if not db_con["info"] == "Database connected.":
|
||||
raise Exception("Could not connect to database.")
|
||||
|
||||
fsrv_response = fsrv_utils.verify_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name)
|
||||
if not fsrv_response:
|
||||
raise Exception("Could not find Foreign Server.")
|
||||
|
||||
data = {
|
||||
"acl": [],
|
||||
"basensp": self.schema_name,
|
||||
"columns":
|
||||
[
|
||||
{
|
||||
"attname": "ename",
|
||||
"datatype": "text",
|
||||
"coloptions": []
|
||||
}
|
||||
],
|
||||
"constraints": [],
|
||||
"ftoptions": [],
|
||||
"inherits": [],
|
||||
"ftsrvname": self.fsrv_name,
|
||||
"name": "ft_%s" % (str(uuid.uuid4())[1:4]),
|
||||
"owner": self.server["username"],
|
||||
"relacl": [],
|
||||
"seclabels": [],
|
||||
"stracl": []
|
||||
}
|
||||
|
||||
response = self.tester.post(
|
||||
self.url + str(utils.SERVER_GROUP) + '/' +
|
||||
str(self.server_id) + '/' + str(self.db_id) + '/'
|
||||
+ str(self.schema_id) + '/', data=json.dumps(data),
|
||||
content_type='html/json')
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
def tearDown(self):
|
||||
""" This function disconnect the test database. """
|
||||
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
@ -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 __future__ import print_function
|
||||
import uuid
|
||||
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers. \
|
||||
tests import utils as fdw_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers. \
|
||||
foreign_servers.tests import utils as fsrv_utils
|
||||
from regression import parent_node_dict
|
||||
from regression import test_utils as utils
|
||||
from . import utils as ft_utils
|
||||
|
||||
|
||||
class ForeignTableDeleteTestCase(BaseTestGenerator):
|
||||
"""
|
||||
This class will delete foreign table under database node.
|
||||
"""
|
||||
|
||||
scenarios = [
|
||||
# Fetching default URL for foreign table node.
|
||||
('Check foreign table Node', dict(url='/browser/foreign-table/obj/'))
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
""" This function will create foreign data wrapper, foreign server
|
||||
and foreign table. """
|
||||
|
||||
self.schema_data = parent_node_dict['schema'][-1]
|
||||
self.server_id = self.schema_data['server_id']
|
||||
self.db_id = self.schema_data['db_id']
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
self.schema_name = self.schema_data['schema_name']
|
||||
self.schema_id = self.schema_data['schema_id']
|
||||
self.fdw_name = "fdw_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.fsrv_name = "fsrv_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.ft_name = "ft_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.fdw_id = fdw_utils.create_fdw(self.server, self.db_name,
|
||||
self.fdw_name)
|
||||
self.fsrv_id = fsrv_utils.create_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name, self.fdw_name)
|
||||
self.ft_id = ft_utils.create_foreign_table(self.server, self.db_name,
|
||||
self.schema_name,
|
||||
self.fsrv_name, self.ft_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will delete foreign table under test database."""
|
||||
|
||||
db_con = database_utils.connect_database(self,
|
||||
utils.SERVER_GROUP,
|
||||
self.server_id,
|
||||
self.db_id)
|
||||
|
||||
if not db_con["info"] == "Database connected.":
|
||||
raise Exception("Could not connect to database.")
|
||||
|
||||
fsrv_response = fsrv_utils.verify_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name)
|
||||
|
||||
if not fsrv_response:
|
||||
raise Exception("Could not find Foreign Server.")
|
||||
|
||||
ft_response = ft_utils.verify_foreign_table(self.server, self.db_name,
|
||||
self.fsrv_name)
|
||||
if not ft_response:
|
||||
raise Exception("Could not find Foreign Table.")
|
||||
|
||||
delete_response = self.tester.delete(
|
||||
self.url + str(utils.SERVER_GROUP) + '/' +
|
||||
str(self.server_id) + '/' +
|
||||
str(self.db_id) + '/' +
|
||||
str(self.schema_id) + '/' +
|
||||
str(self.ft_id),
|
||||
follow_redirects=True)
|
||||
|
||||
self.assertEquals(delete_response.status_code, 200)
|
||||
|
||||
def tearDown(self):
|
||||
""" This function disconnect the test database. """
|
||||
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
@ -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 __future__ import print_function
|
||||
import uuid
|
||||
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers.\
|
||||
tests import utils as fdw_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers.\
|
||||
foreign_servers.tests import utils as fsrv_utils
|
||||
from regression import parent_node_dict
|
||||
from regression import test_utils as utils
|
||||
from . import utils as ft_utils
|
||||
|
||||
|
||||
class ForeignTableGetTestCase(BaseTestGenerator):
|
||||
"""
|
||||
This class will fetch foreign table under database node.
|
||||
"""
|
||||
scenarios = [
|
||||
# Fetching default URL for foreign server node.
|
||||
('Check foreign table Node', dict(url='/browser/foreign-table/obj/'))
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
""" This function will create foreign data wrapper, foreign server
|
||||
and foreign table. """
|
||||
|
||||
self.schema_data = parent_node_dict['schema'][-1]
|
||||
self.server_id = self.schema_data['server_id']
|
||||
self.db_id = self.schema_data['db_id']
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
self.schema_name = self.schema_data['schema_name']
|
||||
self.schema_id = self.schema_data['schema_id']
|
||||
self.fdw_name = "fdw_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.fsrv_name = "fsrv_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.ft_name = "ft_%s" % (str(uuid.uuid4())[1:4])
|
||||
|
||||
self.fdw_id = fdw_utils.create_fdw(self.server, self.db_name,
|
||||
self.fdw_name)
|
||||
self.fsrv_id = fsrv_utils.create_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name, self.fdw_name)
|
||||
self.ft_id = ft_utils.create_foreign_table(self.server, self.db_name,
|
||||
self.schema_name,
|
||||
self.fsrv_name, self.ft_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will fetch foreign table under test database."""
|
||||
|
||||
db_con = database_utils.connect_database(self,
|
||||
utils.SERVER_GROUP,
|
||||
self.server_id,
|
||||
self.db_id)
|
||||
|
||||
if not db_con["info"] == "Database connected.":
|
||||
raise Exception("Could not connect to database.")
|
||||
|
||||
fsrv_response = fsrv_utils.verify_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name)
|
||||
|
||||
if not fsrv_response:
|
||||
raise Exception("Could not find Foreign Server.")
|
||||
|
||||
response = self.tester.get(self.url + str(utils.SERVER_GROUP) + '/' +
|
||||
str(self.server_id) + '/' +
|
||||
str(self.db_id) + '/' +
|
||||
str(self.schema_id) + '/' +
|
||||
str(self.ft_id),
|
||||
content_type='html/json')
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
def tearDown(self):
|
||||
""" This function disconnect the test database. """
|
||||
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
@ -0,0 +1,98 @@
|
||||
# #################################################################
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
# ##################################################################
|
||||
from __future__ import print_function
|
||||
import uuid
|
||||
import json
|
||||
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers. \
|
||||
tests import utils as fdw_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.foreign_data_wrappers. \
|
||||
foreign_servers.tests import utils as fsrv_utils
|
||||
from regression import parent_node_dict
|
||||
from regression import test_utils as utils
|
||||
from . import utils as ft_utils
|
||||
|
||||
|
||||
class ForeignTablePutTestCase(BaseTestGenerator):
|
||||
"""
|
||||
This class will fetch foreign table under database node.
|
||||
"""
|
||||
scenarios = [
|
||||
# Fetching default URL for foreign server node.
|
||||
('Check foreign table Node', dict(url='/browser/foreign-table/obj/'))
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
""" This function will create foreign data wrapper, foreign server
|
||||
and foreign table. """
|
||||
|
||||
self.schema_data = parent_node_dict['schema'][-1]
|
||||
self.server_id = self.schema_data['server_id']
|
||||
self.db_id = self.schema_data['db_id']
|
||||
self.db_name = parent_node_dict["database"][-1]["db_name"]
|
||||
self.schema_name = self.schema_data['schema_name']
|
||||
self.schema_id = self.schema_data['schema_id']
|
||||
self.fdw_name = "fdw_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.fsrv_name = "fsrv_%s" % (str(uuid.uuid4())[1:4])
|
||||
self.ft_name = "ft_%s" % (str(uuid.uuid4())[1:4])
|
||||
|
||||
self.fdw_id = fdw_utils.create_fdw(self.server, self.db_name,
|
||||
self.fdw_name)
|
||||
self.fsrv_id = fsrv_utils.create_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name, self.fdw_name)
|
||||
self.ft_id = ft_utils.create_foreign_table(self.server, self.db_name,
|
||||
self.schema_name,
|
||||
self.fsrv_name, self.ft_name)
|
||||
|
||||
def runTest(self):
|
||||
"""This function will update foreign table under test database."""
|
||||
|
||||
db_con = database_utils.connect_database(self,
|
||||
utils.SERVER_GROUP,
|
||||
self.server_id,
|
||||
self.db_id)
|
||||
|
||||
if not db_con["info"] == "Database connected.":
|
||||
raise Exception("Could not connect to database.")
|
||||
|
||||
fsrv_response = fsrv_utils.verify_fsrv(self.server, self.db_name,
|
||||
self.fsrv_name)
|
||||
|
||||
if not fsrv_response:
|
||||
raise Exception("Could not find Foreign Server.")
|
||||
|
||||
ft_response = ft_utils.verify_foreign_table(self.server, self.db_name,
|
||||
self.fsrv_name)
|
||||
if not ft_response:
|
||||
raise Exception("Could not find Foreign Table.")
|
||||
|
||||
data = \
|
||||
{
|
||||
"description": "This is foreign table update comment",
|
||||
"id": self.ft_id,
|
||||
}
|
||||
|
||||
put_response = self.tester.put(
|
||||
self.url + str(utils.SERVER_GROUP) + '/' +
|
||||
str(self.server_id) + '/' +
|
||||
str(self.db_id) + '/' +
|
||||
str(self.schema_id) + '/' +
|
||||
str(self.ft_id),
|
||||
data=json.dumps(data),
|
||||
follow_redirects=True)
|
||||
|
||||
self.assertEquals(put_response.status_code, 200)
|
||||
|
||||
def tearDown(self):
|
||||
""" This function disconnect the test database. """
|
||||
|
||||
database_utils.disconnect_database(self, self.server_id, self.db_id)
|
@ -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 __future__ import print_function
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
from regression.test_utils import get_db_connection
|
||||
|
||||
file_name = os.path.basename(__file__)
|
||||
|
||||
|
||||
def create_foreign_table(server, db_name, schema_name, fsrv_name,
|
||||
foreign_table_name):
|
||||
"""
|
||||
This function will create foreign table under the existing
|
||||
dummy schema.
|
||||
|
||||
:param server: test_server, test_db, fsrv_name, foreign_table_name
|
||||
:return: ft_id
|
||||
"""
|
||||
|
||||
try:
|
||||
connection = get_db_connection(db_name,
|
||||
server['username'],
|
||||
server['db_password'],
|
||||
server['host'],
|
||||
server['port'])
|
||||
old_isolation_level = connection.isolation_level
|
||||
connection.set_isolation_level(0)
|
||||
pg_cursor = connection.cursor()
|
||||
|
||||
pg_cursor.execute(
|
||||
"CREATE FOREIGN TABLE " + schema_name + "." + foreign_table_name +
|
||||
"(emp_name text NULL) SERVER %s" % fsrv_name)
|
||||
|
||||
connection.set_isolation_level(old_isolation_level)
|
||||
connection.commit()
|
||||
|
||||
# Get 'oid' from newly created foreign table
|
||||
pg_cursor.execute(
|
||||
"SELECT ftrelid FROM pg_foreign_table WHERE ftserver = "
|
||||
"(SELECT oid FROM pg_foreign_server WHERE srvname = '%s') ORDER BY "
|
||||
"ftrelid ASC limit 1" % fsrv_name)
|
||||
|
||||
oid = pg_cursor.fetchone()
|
||||
ft_id = ''
|
||||
if oid:
|
||||
ft_id = oid[0]
|
||||
connection.close()
|
||||
return ft_id
|
||||
except Exception:
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
|
||||
|
||||
def verify_foreign_table(server, db_name, fsrv_name):
|
||||
""" This function will verify current foreign table."""
|
||||
|
||||
try:
|
||||
connection = get_db_connection(db_name,
|
||||
server['username'],
|
||||
server['db_password'],
|
||||
server['host'],
|
||||
server['port'])
|
||||
pg_cursor = connection.cursor()
|
||||
|
||||
pg_cursor.execute(
|
||||
"SELECT ftrelid FROM pg_foreign_table WHERE ftserver = "
|
||||
"(SELECT oid FROM pg_foreign_server WHERE srvname = '%s') ORDER BY "
|
||||
"ftrelid ASC limit 1" % fsrv_name)
|
||||
fts = pg_cursor.fetchone()
|
||||
connection.close()
|
||||
return fts
|
||||
except Exception:
|
||||
traceback.print_exc(file=sys.stderr)
|
Loading…
Reference in New Issue
Block a user