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}')
Пример #2
0
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')
Пример #3
0
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}.')