pgadmin4/web/regression/test_utils.py

164 lines
4.1 KiB
Python
Raw Normal View History

# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
import os
import pickle
from test_setup import config_data, pickle_path
SERVER_GROUP = config_data['server_group']
def get_pickle_id_dict():
"""This function returns the empty dict of server config data"""
pickle_id_dict = {
"sid": [], # server
"did": [], # database
"lrid": [], # role
"tsid": [], # tablespace
"scid": [], # schema
"tfnid": [], # trigger functions
"coid": [], # collation
"cid": [], # casts
"etid": [], # event_trigger
"eid": [], # extension
"fid": [], # FDW
"fsid": [], # FRS
"umid": [], # user_mapping
"seid": [] # sequence
}
return pickle_id_dict
def get_ids(url=pickle_path):
"""
This function read the parent node's id and return it
:param url: file path from which it will red the ids
:type url: str
:return: node ids
:rtype: dict
"""
output = open(url, 'rb')
ids = pickle.load(output)
output.close()
return ids
# def test_getnodes(tester=None):
# # Connect to server and database.
#
# if not tester:
# return None
#
# all_id = get_ids()
#
# server_ids = all_id["sid"]
# db_ids_dict = all_id["did"][0]
#
# db_con = []
# for server_id in server_ids:
# db_id = db_ids_dict[int(server_id)]
# db_con.append(verify_database(tester, SERVER_GROUP, server_id, db_id))
# return db_con
def login_tester_account(tester):
"""
This function login the test account using credentials mentioned in
config file
:param tester: test client
:type tester: flask test client object
:return: None
"""
email = \
config_data['pgAdmin4_login_credentials']['login_username']
password = \
config_data['pgAdmin4_login_credentials']['login_password']
response = tester.post('/login', data=dict(
email=email, password=password), follow_redirects=True)
def logout_tester_account(tester):
"""
This function logout the test account
:param tester: test client
:type tester: flask test client object
:return: None
"""
response = tester.get('/logout')
# Config data for parent_id.pkl
def get_config_data():
"""
This function get the data related to server group and database
like db name, host, port and username etc.
:return: server_group, db_data, pickle_id_dict
:rtype: server_group:dict, db_data:list, pickle_id_dict:dict
"""
db_data = []
pickle_id_dict = get_pickle_id_dict()
server_group = config_data['server_group']
for srv in config_data['server_credentials']:
data = {"name": srv['name'],
"comment": "",
"host": srv['host'],
"port": srv['db_port'],
"db": srv['maintenance_db'],
"username": srv['db_username'],
"role": "",
"sslmode": srv['sslmode']}
db_data.append(data)
return server_group, db_data, pickle_id_dict
def write_parent_id(response_data, pickle_id_dict):
"""
This function writes the server's details to file parent_id.pkl
:param response_data: server's data
:type response_data: list of dictionary
:param pickle_id_dict: contains ids of server,database,tables etc.
:type pickle_id_dict: dict
:return: None
"""
server_id = response_data['node']['_id']
if os.path.isfile(pickle_path):
existed_server_id = open(pickle_path, 'rb')
pickle_id_dict = pickle.load(existed_server_id)
pickle_id_dict["sid"].append(str(server_id))
output = open(pickle_path, 'wb')
pickle.dump(pickle_id_dict, output)
output.close()
def delete_parent_id_file():
"""
This function deletes the file parent_id.pkl which contains server and
database details
:return: None
"""
if os.path.isfile(pickle_path):
os.remove(pickle_path)