Improve code coverage and API test cases for Grant Wizard. Fixes #5344

This commit is contained in:
Nikhil Mohite
2020-08-20 14:04:24 +05:30
committed by Akshay Joshi
parent 79e6480513
commit 6415294782
9 changed files with 648 additions and 40 deletions

View File

@@ -183,7 +183,6 @@ def properties(sid, did, node_id, node_type):
"""It fetches the properties of object types
and render into selection page of wizard
"""
# unquote encoded url parameter
node_type = unquote(node_type)
@@ -197,23 +196,22 @@ def properties(sid, did, node_id, node_type):
node_types = []
show_sysobj = blueprint.show_system_objects().get()
if node_type == 'database':
# Fetch list of schemas
# Get sys_obj_values and get list of schemas
ntype = 'schema'
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/get_schemas.sql']),
show_sysobj=show_sysobj)
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
node_types = res['rows']
else:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/get_schemas.sql']),
nspid=node_id, show_sysobj=False)
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
return internal_server_error(errormsg=res)
@@ -226,11 +224,11 @@ def properties(sid, did, node_id, node_type):
# Fetch functions against schema
if ntype in ['schema', 'function']:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/function.sql']),
node_id=node_id, type='function')
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
failed_objects.append('function')
@@ -243,11 +241,11 @@ def properties(sid, did, node_id, node_type):
(server_prop['server_type'] == 'pg' and
server_prop['version'] >= 11000)) and
ntype in ['schema', 'procedure']):
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/function.sql']),
node_id=node_id, type='procedure')
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
@@ -257,10 +255,10 @@ def properties(sid, did, node_id, node_type):
# Fetch trigger functions
if ntype in ['schema', 'trigger_function']:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/function.sql']),
node_id=node_id, type='trigger_function')
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
@@ -270,11 +268,11 @@ def properties(sid, did, node_id, node_type):
# Fetch Sequences against schema
if ntype in ['schema', 'sequence']:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/sequence.sql']),
node_id=node_id)
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
failed_objects.append('sequence')
@@ -283,11 +281,11 @@ def properties(sid, did, node_id, node_type):
# Fetch Tables against schema
if ntype in ['schema', 'table']:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/table.sql']),
node_id=node_id)
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
failed_objects.append('table')
@@ -296,11 +294,11 @@ def properties(sid, did, node_id, node_type):
# Fetch Views against schema
if ntype in ['schema', 'view']:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/view.sql']),
node_id=node_id, node_type='v')
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
failed_objects.append('view')
@@ -309,11 +307,11 @@ def properties(sid, did, node_id, node_type):
# Fetch Materialzed Views against schema
if ntype in ['schema', 'mview']:
SQL = render_template("/".join(
sql = render_template("/".join(
[server_prop['template_path'], '/sql/view.sql']),
node_id=node_id, node_type='m')
status, res = conn.execute_dict(SQL)
status, res = conn.execute_dict(sql)
if not status:
current_app.logger.error(res)
failed_objects.append('materialized view')
@@ -343,7 +341,6 @@ def msql(sid, did):
"""
This function will return modified SQL
"""
server_prop = server_info
data = request.form if request.form else json.loads(request.data.decode())
# Form db connection
@@ -360,7 +357,6 @@ def msql(sid, did):
current_app.logger.exception(e)
try:
# Parse privileges
data['priv'] = {}
if 'acl' in data:
@@ -381,29 +377,29 @@ def msql(sid, did):
sql_data = ''
data_func = {'objects': data['objects'],
'priv': data['priv']['function']}
SQL = render_template(
sql = render_template(
"/".join([server_prop['template_path'],
'/sql/grant_function.sql']),
data=data_func, conn=conn)
if SQL and SQL.strip('\n') != '':
sql_data += SQL
if sql and sql.strip('\n') != '':
sql_data += sql
data_seq = {'objects': data['objects'],
'priv': data['priv']['sequence']}
SQL = render_template(
sql = render_template(
"/".join([server_prop['template_path'],
'/sql/grant_sequence.sql']),
data=data_seq, conn=conn)
if SQL and SQL.strip('\n') != '':
sql_data += SQL
if sql and sql.strip('\n') != '':
sql_data += sql
data_table = {'objects': data['objects'],
'priv': data['priv']['table']}
SQL = render_template(
sql = render_template(
"/".join([server_prop['template_path'], '/sql/grant_table.sql']),
data=data_table, conn=conn)
if SQL and SQL.strip('\n') != '':
sql_data += SQL
if sql and sql.strip('\n') != '':
sql_data += sql
res = {'data': sql_data}
@@ -469,29 +465,29 @@ def save(sid, did):
sql_data = ''
data_func = {'objects': data['objects'],
'priv': data['priv']['function']}
SQL = render_template(
sql = render_template(
"/".join([server_prop['template_path'],
'/sql/grant_function.sql']),
data=data_func, conn=conn)
if SQL and SQL.strip('\n') != '':
sql_data += SQL
if sql and sql.strip('\n') != '':
sql_data += sql
data_seq = {'objects': data['objects'],
'priv': data['priv']['sequence']}
SQL = render_template(
sql = render_template(
"/".join([server_prop['template_path'],
'/sql/grant_sequence.sql']),
data=data_seq, conn=conn)
if SQL and SQL.strip('\n') != '':
sql_data += SQL
if sql and sql.strip('\n') != '':
sql_data += sql
data_table = {'objects': data['objects'],
'priv': data['priv']['table']}
SQL = render_template(
sql = render_template(
"/".join([server_prop['template_path'], '/sql/grant_table.sql']),
data=data_table, conn=conn)
if SQL and SQL.strip('\n') != '':
sql_data += SQL
if sql and sql.strip('\n') != '':
sql_data += sql
status, res = conn.execute_dict(sql_data)
if not status: