Add tests for Languages

pull/3/head
Priyanka Shendge 2016-10-18 14:36:25 +01:00 committed by Dave Page
parent 62a35f24e7
commit c4f1b8eb11
6 changed files with 376 additions and 0 deletions

View File

@ -0,0 +1,16 @@
# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
from pgadmin.utils.route import BaseTestGenerator
class LanguageTestGenerator(BaseTestGenerator):
def runTest(self):
return []

View File

@ -0,0 +1,80 @@
# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
from __future__ import print_function
import json
import uuid
from pgadmin.utils.route import BaseTestGenerator
from regression import parent_node_dict
from regression import test_utils as utils
from pgadmin.browser.server_groups.servers.databases.tests import \
utils as database_utils
from . import utils as language_utils
class LanguagesAddTestCase(BaseTestGenerator):
scenarios = [
('Language add test case', dict(url='/browser/language/obj/'))
]
def setUp(self):
self.server_data = parent_node_dict["database"][-1]
self.server_id = self.server_data["server_id"]
self.db_id = self.server_data['db_id']
self.db_name = self.server_data["db_name"]
db_con = database_utils.connect_database(self,
utils.SERVER_GROUP,
self.server_id,
self.db_id)
if not db_con["info"] == "Database connected.":
raise Exception("Could not connect to database.")
def runTest(self):
"""This function will add language under test database."""
db_user = self.server['username']
self.data = {
"lanacl": [],
"laninl": "btendscan",
"lanowner": db_user,
"lanproc": "plpgsql_call_handler",
"lanval": "fmgr_c_validator",
"name": "language_%s" % str(uuid.uuid4())[1:4],
"seclabels": [],
"template_list":
[
"plperl",
"plperlu",
"plpython2u",
"plpython3u",
"plpythonu",
"pltcl",
"pltclu"
],
"trusted": "true"
}
response = self.tester.post(
self.url + str(utils.SERVER_GROUP) + '/' +
str(self.server_id) + '/' + str(
self.db_id) + '/',
data=json.dumps(self.data),
content_type='html/json')
self.assertEquals(response.status_code, 200)
def tearDown(self):
"""This function delete added language and
disconnect the test database."""
language_utils.delete_language(self.server, self.db_name,
self.data['name'])
database_utils.disconnect_database(self, self.server_id, self.db_id)

View File

@ -0,0 +1,54 @@
# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
from __future__ import print_function
import uuid
from pgadmin.utils.route import BaseTestGenerator
from regression import parent_node_dict
from regression import test_utils as utils
from pgadmin.browser.server_groups.servers.databases.tests import \
utils as database_utils
from . import utils as language_utils
class LanguagesDeleteTestCase(BaseTestGenerator):
scenarios = [
('Language delete test case', dict(url='/browser/language/obj/'))
]
def setUp(self):
self.server_data = parent_node_dict["database"][-1]
self.server_id = self.server_data["server_id"]
self.db_id = self.server_data['db_id']
self.db_name = self.server_data["db_name"]
self.lang_name = "language_%s" % str(uuid.uuid4())[1:4]
db_con = database_utils.connect_database(self,
utils.SERVER_GROUP,
self.server_id,
self.db_id)
if not db_con["info"] == "Database connected.":
raise Exception("Could not connect to database.")
self.language_id = language_utils.create_language(self.server,
self.db_name,
self.lang_name)
def runTest(self):
"""This function will delete language under test database."""
response = self.tester.delete("{0}{1}/{2}/{3}/{4}".format(
self.url, utils.SERVER_GROUP, self.server_id, self.db_id,
self.language_id), follow_redirects=True)
self.assertEquals(response.status_code, 200)
def tearDown(self):
"""This function disconnect the test database."""
database_utils.disconnect_database(self, self.server_id, self.db_id)

View File

@ -0,0 +1,56 @@
# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
from __future__ import print_function
import uuid
from pgadmin.utils.route import BaseTestGenerator
from regression import parent_node_dict
from regression import test_utils as utils
from pgadmin.browser.server_groups.servers.databases.tests import \
utils as database_utils
from . import utils as language_utils
class LanguagesGetTestCase(BaseTestGenerator):
scenarios = [
('Language get test case', dict(url='/browser/language/obj/'))
]
def setUp(self):
self.server_data = parent_node_dict["database"][-1]
self.server_id = self.server_data["server_id"]
self.db_id = self.server_data['db_id']
self.db_name = self.server_data["db_name"]
self.lang_name = "language_%s" % str(uuid.uuid4())[1:4]
db_con = database_utils.connect_database(self,
utils.SERVER_GROUP,
self.server_id,
self.db_id)
if not db_con["info"] == "Database connected.":
raise Exception("Could not connect to database.")
self.language_id = language_utils.create_language(self.server,
self.db_name,
self.lang_name)
def runTest(self):
"""This function will get the language under test database."""
response = self.tester.get("{0}{1}/{2}/{3}/{4}".format(
self.url, utils.SERVER_GROUP, self.server_id, self.db_id,
self.language_id), follow_redirects=True)
self.assertEquals(response.status_code, 200)
def tearDown(self):
"""This function delete added language and
disconnect the test database."""
language_utils.delete_language(self.server, self.db_name,
self.lang_name)
database_utils.disconnect_database(self, self.server_id, self.db_id)

View File

@ -0,0 +1,62 @@
# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
from __future__ import print_function
import json
import uuid
from pgadmin.utils.route import BaseTestGenerator
from regression import parent_node_dict
from regression import test_utils as utils
from pgadmin.browser.server_groups.servers.databases.tests import \
utils as database_utils
from . import utils as language_utils
class LanguagesPutTestCase(BaseTestGenerator):
scenarios = [
('Language update test case', dict(url='/browser/language/obj/'))
]
def setUp(self):
self.server_data = parent_node_dict["database"][-1]
self.server_id = self.server_data["server_id"]
self.db_id = self.server_data['db_id']
self.db_name = self.server_data["db_name"]
self.lang_name = "language_%s" % str(uuid.uuid4())[1:4]
db_con = database_utils.connect_database(self,
utils.SERVER_GROUP,
self.server_id,
self.db_id)
if not db_con["info"] == "Database connected.":
raise Exception("Could not connect to database.")
self.language_id = language_utils.create_language(self.server,
self.db_name,
self.lang_name)
def runTest(self):
"""This function will update the language under test database."""
data = \
{
"id": self.language_id,
"description": "This is test comment."
}
response = self.tester.put("{0}{1}/{2}/{3}/{4}".format(
self.url, utils.SERVER_GROUP, self.server_id, self.db_id,
self.language_id), data=json.dumps(data),
follow_redirects=True)
self.assertEquals(response.status_code, 200)
def tearDown(self):
"""This function delete added language and
disconnect the test database."""
language_utils.delete_language(self.server, self.db_name,
self.lang_name)
database_utils.disconnect_database(self, self.server_id, self.db_id)

View File

@ -0,0 +1,108 @@
# #################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2016, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
# ##################################################################
from __future__ import print_function
import sys
import traceback
from regression.test_utils import get_db_connection
def create_language(server, db_name, lang_name):
"""
This function add a language into database
:param server: server details
:type server: dict
:param db_name: database name
:type db_name: str
:param lang_name: language name
:type lang_name: str
:return cast id
:rtype: int
"""
try:
connection = get_db_connection(db_name,
server['username'],
server['db_password'],
server['host'],
server['port'])
pg_cursor = connection.cursor()
query = ("CREATE TRUSTED PROCEDURAL LANGUAGE %s "
"HANDLER plpgsql_call_handler" % lang_name)
pg_cursor.execute(query)
connection.commit()
# Get 'oid' from newly created language
pg_cursor.execute("SELECT oid from pg_language where lanname='%s'" %
lang_name)
language = pg_cursor.fetchone()
language_id = language[0]
connection.close()
return language_id
except Exception:
traceback.print_exc(file=sys.stderr)
def verify_language(server, db_name, lang_name):
"""
This function verifies the language exist in database or not.
:param server: server details
:type server: dict
:param db_name: database name
:type db_name: str
:param lang_name: language name
:type lang_name: str
:return language: language record
:rtype: tuple
"""
try:
connection = get_db_connection(db_name,
server['username'],
server['db_password'],
server['host'],
server['port'])
pg_cursor = connection.cursor()
pg_cursor.execute("SELECT oid from pg_language where lanname='%s'" %
lang_name)
language = pg_cursor.fetchall()
connection.close()
return language
except Exception:
traceback.print_exc(file=sys.stderr)
def delete_language(server, db_name, lang_name):
"""
This function delete the language exist in database.
:param server: server details
:type server: dict
:param db_name: database name
:type db_name: str
:param lang_name: language name
:type lang_name: str
:return None
"""
try:
connection = get_db_connection(db_name,
server['username'],
server['db_password'],
server['host'],
server['port'])
pg_cursor = connection.cursor()
pg_cursor.execute("SELECT * from pg_language where lanname='%s'" %
lang_name)
languages = pg_cursor.fetchall()
language_count = len(languages)
if language_count:
pg_cursor.execute(
"DELETE FROM pg_language where lanname='%s'" %
lang_name)
connection.commit()
connection.close()
except Exception:
traceback.print_exc(file=sys.stderr)