mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-08-09 04:28:38 -05:00
Add schema and database child node regression tests.
This commit is contained in:
committed by
Dave Page
parent
0ce8b031f8
commit
a535eddfcd
@@ -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 []
|
||||
+72
@@ -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 pgadmin.utils.route import BaseTestGenerator
|
||||
from regression import test_utils as utils
|
||||
from . import utils as extension_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.tests import utils as server_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.schemas.tests import\
|
||||
utils as schema_utils
|
||||
|
||||
|
||||
|
||||
class ExtensionsAddTestCase(BaseTestGenerator):
|
||||
|
||||
scenarios = [
|
||||
# Fetching default URL for extension node.
|
||||
('Check Extension Node', dict(url='/browser/extension/obj/'))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
"""
|
||||
This function perform the following tasks:
|
||||
1. Add and connect to the test server(s)
|
||||
2. Add database(s) connected to server(s)
|
||||
3. Add schemas to connected database(s)
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
||||
# Add the server
|
||||
server_utils.add_server(cls.tester)
|
||||
|
||||
# Connect to servers
|
||||
cls.server_connect_response, cls.server_group, cls.server_ids = \
|
||||
server_utils.connect_server(cls.tester)
|
||||
|
||||
if len(cls.server_connect_response) == 0:
|
||||
raise Exception("No Server(s) connected to add the database!!!")
|
||||
|
||||
# Add databases to connected servers
|
||||
database_utils.add_database(cls.tester, cls.server_connect_response,
|
||||
cls.server_ids)
|
||||
|
||||
schema_utils.add_schemas(cls.tester)
|
||||
|
||||
def runTest(self):
|
||||
""" This function will add extension under 1st server of tree node. """
|
||||
|
||||
extension_utils.add_extensions(self.tester)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
"""This function deletes the added schema, database, server and parent
|
||||
id file
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
||||
extension_utils.delete_extension(cls.tester)
|
||||
schema_utils.delete_schema(cls.tester)
|
||||
database_utils.delete_database(cls.tester)
|
||||
server_utils.delete_server(cls.tester)
|
||||
utils.delete_parent_id_file()
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
# #################################################################
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
# ##################################################################
|
||||
|
||||
import json
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from regression import test_utils as utils
|
||||
from pgadmin.browser.server_groups.servers.databases.schemas.tests import \
|
||||
utils as schema_utils
|
||||
from . import utils as extension_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.tests import utils as server_utils
|
||||
|
||||
|
||||
class ExtensionsDeleteTestCase(BaseTestGenerator):
|
||||
|
||||
scenarios = [
|
||||
# Fetching default URL for extension node.
|
||||
('Check Extension Node', dict(url='/browser/extension/obj/'))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
"""
|
||||
This function perform the following tasks:
|
||||
1. Add and connect to the test server(s)
|
||||
2. Add database(s) connected to server(s)
|
||||
3. Add schemas to connected database(s)
|
||||
4. Add extension(s) to schema(s)
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
||||
# Add the server
|
||||
server_utils.add_server(cls.tester)
|
||||
|
||||
# Connect to servers
|
||||
cls.server_connect_response, cls.server_group, cls.server_ids = \
|
||||
server_utils.connect_server(cls.tester)
|
||||
|
||||
if len(cls.server_connect_response) == 0:
|
||||
raise Exception("No Server(s) connected to add the database!!!")
|
||||
|
||||
# Add databases to connected servers
|
||||
database_utils.add_database(cls.tester, cls.server_connect_response,
|
||||
cls.server_ids)
|
||||
|
||||
# Add schema(s) to database(s)
|
||||
schema_utils.add_schemas(cls.tester)
|
||||
|
||||
# Add extension(s) to schema(s)
|
||||
extension_utils.add_extensions(cls.tester)
|
||||
|
||||
def runTest(self):
|
||||
""" This function will add extension under 1st server of tree node. """
|
||||
|
||||
delete_respdata = extension_utils.delete_extension(self.tester)
|
||||
self.assertTrue(delete_respdata['success'], 1)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
"""This function deletes the added schema, database, server and parent
|
||||
id file
|
||||
"""
|
||||
|
||||
database_utils.delete_database(cls.tester)
|
||||
server_utils.delete_server(cls.tester)
|
||||
utils.delete_parent_id_file()
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
#################################################################
|
||||
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
|
||||
##################################################################
|
||||
|
||||
import json
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from regression import test_utils as utils
|
||||
from pgadmin.browser.server_groups.servers.databases.schemas.tests import \
|
||||
utils as schema_utils
|
||||
from . import utils as extension_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.tests import utils as server_utils
|
||||
|
||||
|
||||
class ExtensionsGetTestCase(BaseTestGenerator):
|
||||
|
||||
scenarios = [
|
||||
# Fetching default URL for extension node.
|
||||
('Check Extension Node', dict(url='/browser/extension/obj/'))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
"""
|
||||
This function perform the following tasks:
|
||||
1. Add and connect to the test server(s)
|
||||
2. Add database(s) connected to server(s)
|
||||
3. Add schemas to connected database(s)
|
||||
4. Add extension(s) to schema(s)
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
||||
# Add the server
|
||||
server_utils.add_server(cls.tester)
|
||||
|
||||
# Connect to servers
|
||||
cls.server_connect_response, cls.server_group, cls.server_ids = \
|
||||
server_utils.connect_server(cls.tester)
|
||||
|
||||
if len(cls.server_connect_response) == 0:
|
||||
raise Exception("No Server(s) connected to add the database!!!")
|
||||
|
||||
# Add databases to connected servers
|
||||
database_utils.add_database(cls.tester, cls.server_connect_response,
|
||||
cls.server_ids)
|
||||
|
||||
schema_utils.add_schemas(cls.tester)
|
||||
|
||||
extension_utils.add_extensions(cls.tester)
|
||||
|
||||
def runTest(self):
|
||||
""" This function will add extension under 1st server of tree node. """
|
||||
|
||||
all_id = utils.get_ids()
|
||||
server_ids = all_id["sid"]
|
||||
db_ids_dict = all_id["did"][0]
|
||||
extension_ids_dict = all_id["eid"][0]
|
||||
|
||||
for server_id in server_ids:
|
||||
db_id = db_ids_dict[int(server_id)]
|
||||
extension_id = extension_ids_dict[server_id]
|
||||
|
||||
response = extension_utils.verify_extensions(self.tester,
|
||||
utils.SERVER_GROUP,
|
||||
server_id, db_id,
|
||||
extension_id)
|
||||
|
||||
self.assertEquals(response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
"""This function deletes the added schema, database, server and parent
|
||||
id file
|
||||
"""
|
||||
|
||||
extension_utils.delete_extension(cls.tester)
|
||||
schema_utils.delete_schema(cls.tester)
|
||||
database_utils.delete_database(cls.tester)
|
||||
server_utils.delete_server(cls.tester)
|
||||
utils.delete_parent_id_file()
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
# #################################################################
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
# ##################################################################
|
||||
|
||||
|
||||
import json
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from regression import test_utils as utils
|
||||
from pgadmin.browser.server_groups.servers.databases.schemas.tests import \
|
||||
utils as schema_utils
|
||||
from . import utils as extension_utils
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.tests import utils as server_utils
|
||||
|
||||
|
||||
class ExtensionsPutTestCase(BaseTestGenerator):
|
||||
|
||||
scenarios = [
|
||||
# Fetching default URL for extension node.
|
||||
('Check Extension Node', dict(url='/browser/extension/obj/'))
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
"""
|
||||
This function perform the following tasks:
|
||||
1. Add and connect to the test server(s)
|
||||
2. Add database(s) connected to server(s)
|
||||
3. Add schemas to connected database(s)
|
||||
4. Add extension(s) to schema(s)
|
||||
|
||||
:return: None
|
||||
"""
|
||||
|
||||
# Add the server
|
||||
server_utils.add_server(cls.tester)
|
||||
|
||||
# Connect to servers
|
||||
cls.server_connect_response, cls.server_group, cls.server_ids = \
|
||||
server_utils.connect_server(cls.tester)
|
||||
|
||||
if len(cls.server_connect_response) == 0:
|
||||
raise Exception("No Server(s) connected to add the database!!!")
|
||||
|
||||
# Add databases to connected servers
|
||||
database_utils.add_database(cls.tester, cls.server_connect_response,
|
||||
cls.server_ids)
|
||||
|
||||
schema_utils.add_schemas(cls.tester)
|
||||
|
||||
extension_utils.add_extensions(cls.tester)
|
||||
|
||||
def runTest(self):
|
||||
""" This function will add extension under 1st server of tree node. """
|
||||
|
||||
all_id = utils.get_ids()
|
||||
server_ids = all_id["sid"]
|
||||
db_ids_dict = all_id["did"][0]
|
||||
extension_ids_dict = all_id["eid"][0]
|
||||
schema_info_dict = all_id["scid"][0]
|
||||
|
||||
for server_id in server_ids:
|
||||
db_id = db_ids_dict[int(server_id)]
|
||||
extension_id = extension_ids_dict[server_id]
|
||||
|
||||
response = extension_utils.verify_extensions(self.tester,
|
||||
utils.SERVER_GROUP,
|
||||
server_id, db_id,
|
||||
extension_id)
|
||||
|
||||
if response.status_code == 200:
|
||||
schema_name = schema_info_dict[int(server_id)][1]
|
||||
|
||||
data = \
|
||||
{
|
||||
"id": extension_id,
|
||||
"schema": schema_name
|
||||
}
|
||||
|
||||
put_response = self.tester.put(
|
||||
self.url + str(utils.SERVER_GROUP) + '/' +
|
||||
str(server_id) + '/' + str(db_id) +
|
||||
'/' + str(extension_id),
|
||||
data=json.dumps(data),
|
||||
follow_redirects=True)
|
||||
|
||||
self.assertEquals(put_response.status_code, 200)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
"""This function deletes the added schema, database, server and parent
|
||||
id file
|
||||
"""
|
||||
extension_utils.delete_extension(cls.tester)
|
||||
schema_utils.delete_schema(cls.tester)
|
||||
database_utils.delete_database(cls.tester)
|
||||
server_utils.delete_server(cls.tester)
|
||||
utils.delete_parent_id_file()
|
||||
@@ -0,0 +1,134 @@
|
||||
# #################################################################
|
||||
#
|
||||
# pgAdmin 4 - PostgreSQL Tools
|
||||
#
|
||||
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
|
||||
# This software is released under the PostgreSQL Licence
|
||||
#
|
||||
# ##################################################################
|
||||
|
||||
|
||||
import os
|
||||
import pickle
|
||||
import json
|
||||
from regression.test_setup import advanced_config_data, pickle_path
|
||||
from regression import test_utils as utils
|
||||
from pgadmin.browser.server_groups.servers.databases.tests import \
|
||||
utils as database_utils
|
||||
from pgadmin.browser.server_groups.servers.tests import utils as server_utils
|
||||
|
||||
|
||||
EXTENSION_URL = '/browser/extension/obj/'
|
||||
|
||||
|
||||
def get_extension_config_data(schema_name, server_connect_data):
|
||||
adv_config_data = None
|
||||
db_user = server_connect_data['data']['user']['name']
|
||||
|
||||
# Get the config data of appropriate db user
|
||||
for config_test_data in advanced_config_data['extension_credentials']:
|
||||
if db_user == config_test_data['owner']:
|
||||
adv_config_data = config_test_data
|
||||
|
||||
data = {
|
||||
"name": adv_config_data['name'],
|
||||
"relocatable": adv_config_data['relocate'],
|
||||
"schema": schema_name,
|
||||
"version": adv_config_data['version']
|
||||
}
|
||||
return data
|
||||
|
||||
|
||||
def write_extension_info(response_data, server_id):
|
||||
"""
|
||||
This function writes the schema id into parent_id.pkl
|
||||
|
||||
:param response_data: extension add response data
|
||||
:type response_data: dict
|
||||
:param server_id: server id
|
||||
:type server_id: str
|
||||
:return: None
|
||||
"""
|
||||
|
||||
extension_id = response_data['node']['_id']
|
||||
# schema_name = str(response_data['node']['label'])
|
||||
pickle_id_dict = utils.get_pickle_id_dict()
|
||||
if os.path.isfile(pickle_path):
|
||||
existing_server_id = open(pickle_path, 'rb')
|
||||
tol_server_id = pickle.load(existing_server_id)
|
||||
pickle_id_dict = tol_server_id
|
||||
if 'eid' in pickle_id_dict:
|
||||
if pickle_id_dict['eid']:
|
||||
# Add the extension_id as value in dict
|
||||
pickle_id_dict["eid"][0].update({server_id: extension_id})
|
||||
else:
|
||||
# Create new dict with server_id and extension_id
|
||||
pickle_id_dict["eid"].append({server_id: extension_id})
|
||||
extension_output = open(pickle_path, 'wb')
|
||||
pickle.dump(pickle_id_dict, extension_output)
|
||||
extension_output.close()
|
||||
|
||||
|
||||
def add_extensions(tester):
|
||||
|
||||
all_id = utils.get_ids()
|
||||
server_ids = all_id["sid"]
|
||||
db_ids_dict = all_id["did"][0]
|
||||
schema_info_dict = all_id["scid"][0]
|
||||
|
||||
for server_id in server_ids:
|
||||
db_id = db_ids_dict[int(server_id)]
|
||||
db_con = database_utils.verify_database(tester, utils.SERVER_GROUP,
|
||||
server_id, db_id)
|
||||
if db_con['data']["connected"]:
|
||||
server_connect_response = server_utils.verify_server(
|
||||
tester, utils.SERVER_GROUP, server_id)
|
||||
|
||||
schema_name = schema_info_dict[int(server_id)][1]
|
||||
data = get_extension_config_data(schema_name,
|
||||
server_connect_response)
|
||||
|
||||
response = tester.post(
|
||||
EXTENSION_URL + str(utils.SERVER_GROUP) + '/' +
|
||||
str(server_id) + '/' + str(
|
||||
db_id) + '/',
|
||||
data=json.dumps(data),
|
||||
content_type='html/json')
|
||||
assert response.status_code == 200
|
||||
response_data = json.loads(response.data.decode('utf-8'))
|
||||
write_extension_info(response_data, server_id)
|
||||
|
||||
|
||||
def verify_extensions(tester, server_group, server_id, db_id, extension_id):
|
||||
|
||||
response = tester.get(EXTENSION_URL + str(server_group) + '/' +
|
||||
str(server_id) + '/' + str(db_id) +
|
||||
'/' + str(extension_id),
|
||||
content_type='html/json')
|
||||
return response
|
||||
|
||||
|
||||
def delete_extension(tester):
|
||||
|
||||
all_id = utils.get_ids()
|
||||
server_ids = all_id["sid"]
|
||||
db_ids_dict = all_id["did"][0]
|
||||
extension_ids_dict = all_id["eid"][0]
|
||||
|
||||
for server_id in server_ids:
|
||||
db_id = db_ids_dict[int(server_id)]
|
||||
extension_id = extension_ids_dict[server_id]
|
||||
|
||||
response = verify_extensions(tester,
|
||||
utils.SERVER_GROUP,
|
||||
server_id, db_id,
|
||||
extension_id)
|
||||
if response.status_code == 200:
|
||||
delete_response = tester.delete(
|
||||
EXTENSION_URL + str(utils.SERVER_GROUP) + '/' +
|
||||
str(server_id) + '/' +
|
||||
str(db_id) + '/' +
|
||||
str(extension_id),
|
||||
follow_redirects=True)
|
||||
delete_respdata = json.loads(delete_response.data.decode())
|
||||
return delete_respdata
|
||||
Reference in New Issue
Block a user