def test_add_delete_database_permission_port_specified(core_session, database_config, users_and_roles, cleanup_resources): """ C281976 Add/delete database permissions if database port has been specified. :param core_session: Authenticated Centrify session. :param database_config:fixture to create database with accounts. :param users_and_roles: Fixture to manage roles and user. :param cleanup_resources:cleans up resources """ # Creating a database without defined port. database_list = cleanup_resources[2] db_data = database_config['sql_db_config'] db_name = f"{db_data['db_name']}{guid()}" db_result, db_success = ResourceManager.add_database( core_session, name=db_name, port=None, fqdn=db_data['hostname'], databaseclass=db_data['databaseclass'], description=db_data['description'], instancename=db_data['instancename'], servicename=db_data['servicename']) assert db_success, f'Failed to create database without defined port:API response result:{db_result}' logger.info( f'Successfully created database without defined port :{db_result}') database_list.append(db_result) # Updating the database setting. update_db_res, update_db_success = ResourceManager.update_database( core_session, db_result, db_name, db_data['hostname'], db_data['port'], db_data['description'], db_data['instancename']) assert update_db_success, f"Fail to update database: API response result:{update_db_res}" logger.info(f"Successfully updated database with port:{update_db_res}") # Cloud user session with "Privileged Access Service Administrator"rights. cloud_user_session = users_and_roles.get_session_for_user( 'Privileged Access Service Administrator') assert cloud_user_session.auth_details, f'Failed to create with PAS administrator:{cloud_user_session}' cloud_user = cloud_user_session.auth_details['User'] cloud_user_id = cloud_user_session.auth_details['UserId'] logger.info( f'User with Privileged Access Service Administrator Rights login successfully: user_Name:{cloud_user}' ) # Assigning "Delete" permission to Cloud user. db_perm_result, db_perm_success = ResourceManager.assign_database_permissions( core_session, "Delete", cloud_user, cloud_user_id, pvid=db_result) assert db_perm_success, f'Failed to "Delete rights:API response result:{db_perm_result}' logger.info( f'successfully assigned "Delete" rights to user: {db_perm_result}')
def test_update_database_settings_page(core_session, database_config, cleanup_resources): """ TC: C281881 Update Database Settings page :param core_session: Authenticated Centrify session :param database_config:fixture to create database with accounts :param cleanup_resources:cleans up resources """ # Creating a database database_list = cleanup_resources[2] db_data = database_config['sql_db_config'] db_name = f"{db_data['db_name']}{guid()}" db_description = "Test Description" default_checkout_time = 15 db_result, db_success = ResourceManager.add_database( core_session, name=db_name, port=None, fqdn=db_data['hostname'], databaseclass=db_data['databaseclass'], description=db_description, instancename=db_data['instancename'], servicename=db_data['servicename']) assert db_success, f'Failed to create database without defined port:API response result:{db_result}' logger.info( f'Successfully created database without defined port :{db_result}') database_list.append(db_result) # Updating the database setting update_db_res, update_db_success = ResourceManager.update_database( core_session, db_result, db_name, db_data['hostname'], db_data['port'], db_description, db_data['instancename'], DefaultCheckoutTime=default_checkout_time, allowmultiplecheckouts=True) assert update_db_success, f"Fail to update database: API response result:{update_db_res}" logger.info(f"Successfully updated database with port:{update_db_res}") # Query for database description query_description = f"SELECT VaultDatabase.Description FROM VaultDatabase where VaultDatabase.Name='{db_name}'" description_check = RedrockController.get_result_rows( RedrockController.redrock_query(core_session, query_description)) assert description_check[0][ 'Description'] == db_description, "Password history table did not update" logger.info('Password history table API response') # Query for database default checkout time query_default_checkout_time = f"SELECT VaultDatabase.DefaultCheckoutTime FROM VaultDatabase where " \ f"VaultDatabase.Name='{db_name}' " checkout_value_check = RedrockController.get_result_rows( RedrockController.redrock_query(core_session, query_default_checkout_time)) assert checkout_value_check[0]['DefaultCheckoutTime'] == default_checkout_time, "Password history table did not " \ "update " logger.info('Password history table API response') # Query for allow multiple checkouts query_allow_multiple_checkouts = f"SELECT VaultDatabase.AllowMultipleCheckouts FROM VaultDatabase where " \ f"VaultDatabase.Name='{db_name}' " allow_multiple_checkouts_value_check = RedrockController.get_result_rows( RedrockController.redrock_query(core_session, query_allow_multiple_checkouts)) assert allow_multiple_checkouts_value_check[0]['AllowMultipleCheckouts'] is True, "Allow multiple " \ "checkouts value is False" logger.info('Allow multiple checkouts value is True')
def test_invalid_missing_arguments_are_handled_when_sending_rest_calls_to_cps( core_session, database_config, cleanup_resources): """ Test case: C1149 :param core_session: Centrify Authenticated session :param cleanup_resources: Cleanup fixture. """ db_data = database_config oracle_db = f"{db_data['oracle_db_config']['db_name']}{guid()}" sql_db = f"{db_data['sql_db_config']['db_name']}{guid()}" sapase_db = f"{db_data['sap_ase_db_config']['db_name']}{guid()}" database_list = cleanup_resources[2] # Oracle db REST call test # adding oracle without service name. failed_oracle_result, status = ResourceManager.add_database( core_session, name=oracle_db, port=db_data['oracle_db_config']['port'], fqdn=db_data['oracle_db_config']['hostname'], databaseclass=db_data['oracle_db_config']['databaseclass'], servicename=None) assert status is False, f'Database added successfully without service name which should not be the ' \ f'case with result {failed_oracle_result} ' logger.info( f'database not added successfully from api with status code {status} and error ' '"Invalid argument. Service name is required for Oracle Database" which is expected"' ) # adding oracle db with instance and service name oracle_result, status = ResourceManager.add_database( core_session, name=oracle_db, port=db_data['oracle_db_config']['port'], fqdn=db_data['oracle_db_config']['hostname'], description=db_data['oracle_db_config']['description'], databaseclass=db_data['oracle_db_config']['databaseclass'], instancename=db_data['oracle_db_config']['instancename'], servicename=db_data['oracle_db_config']['servicename']) assert status, f'Database failed to add with result {oracle_result}' database_list.append(oracle_result) logger.info( 'database added successfully with instance name filtered out silently by cloud backend' ) # Sql db REST call test sql_result, status = ResourceManager.add_database( core_session, name=sql_db, port=db_data['sql_db_config']['port'], fqdn=db_data['sql_db_config']['hostname'], description=db_data['sql_db_config']['description'], databaseclass=db_data['sql_db_config']['databaseclass'], instancename=db_data['sql_db_config']['instancename'], servicename=db_data['sql_db_config']['servicename']) assert status, f'Database failed to add with result {sql_result}' database_list.append(sql_result) logger.info( f'database added successfully with service name filtered out silently by cloud backend' ) # SAP ASE db REST call test sap_result, status = ResourceManager.add_database( core_session, name=sapase_db, port=db_data['sap_ase_db_config']['port'], fqdn=db_data['sap_ase_db_config']['hostname'], description=db_data['sap_ase_db_config']['description'], databaseclass=db_data['sap_ase_db_config']['databaseclass'], instancename=db_data['sap_ase_db_config']['instancename'], servicename=db_data['sap_ase_db_config']['servicename']) assert status, f'Database failed to add with result {sap_result}' database_list.append(sap_result) logger.info( 'SAP ASE database added successfully with service name filtered out silently by cloud backend' ) # update Oracle database description. result, status = ResourceManager.update_database( core_session, db_id=oracle_result, name=oracle_db, fqdn=db_data['oracle_db_config']['hostname'], port=db_data['oracle_db_config']['port'], description='test_oracle database configuration', instance=db_data['oracle_db_config']['instancename'], db_class=db_data['oracle_db_config']['databaseclass'], service_name=db_data['oracle_db_config']['servicename']) assert status, 'failed to update oracle database description as expected.' logger.info(f'Oracle db updated successfully {oracle_db}.') # Update SAP ASE database description result, status = ResourceManager.update_database( core_session, db_id=sap_result, name=sapase_db, fqdn=db_data['sap_ase_db_config']['hostname'], port=db_data['sap_ase_db_config']['port'], description='test_SAP ASE database configuration', instance=db_data['sap_ase_db_config']['instancename'], db_class=db_data['sap_ase_db_config']['databaseclass'], service_name=db_data['sap_ase_db_config']['servicename']) assert status, 'failed to update sap ase database description as expected.' logger.info(f'SAP ASE db updated successfully {sapase_db}.') # Update SQL database description result, status = ResourceManager.update_database( core_session, db_id=sql_result, name=sql_result, fqdn=db_data['sql_db_config']['hostname'], port=db_data['sap_ase_db_config']['port'], description='test description for sql database', instance=db_data['sql_db_config']['instancename']) assert status, f'failed to update sql database {sql_db} description.' logger.info(f'sql db updated successfully {sql_db}.')