Example #1
0
def _make_four_accounts_get_names(session, mutable_list, ssh=False):
    server_prefix = "bsd_tst_sys" + "-" + str(
        ResourceManager.time_mark_in_hours()) + "-" + guid()
    account_prefix = "ta_"
    if ssh:
        batch = ResourceManager.add_multiple_systems_with_accounts(
            session,
            1,
            3,
            mutable_list,
            system_prefix=f'{server_prefix}_password',
            user_prefix=f'{account_prefix}_password')
        batch2 = ResourceManager.add_multiple_ssh_systems_with_accounts(
            session,
            1,
            1,
            mutable_list,
            system_prefix=f'{server_prefix}_ssh',
            user_prefix=f'{account_prefix}_ssh')
        all_systems, all_accounts = DataManipulation.aggregate_lists_in_dict_values(
            [batch, batch2])
    else:
        batch = ResourceManager.add_multiple_systems_with_accounts(
            session,
            1,
            4,
            mutable_list,
            system_prefix=server_prefix,
            user_prefix=account_prefix)
        all_systems, all_accounts = DataManipulation.aggregate_lists_in_dict_values(
            [batch])
    all_account_names = ResourceManager.get_multi_added_account_names(
        session, all_systems)
    return server_prefix, account_prefix, all_systems, all_accounts, all_account_names
def _make_one_server_get_name(session, mutable_list, ssh=False):
    server_prefix = "bsd_tst_sys" + "-" + str(ResourceManager.time_mark_in_hours()) + "-" + guid()
    if ssh:
        batch1 = ResourceManager.add_multiple_ssh_systems_with_accounts(session, 1, 2, mutable_list, system_prefix=server_prefix)
    else:
        batch1 = ResourceManager.add_multiple_systems_with_accounts(session, 1, 2, mutable_list, system_prefix=server_prefix)
    all_systems, all_accounts = DataManipulation.aggregate_lists_in_dict_values([batch1])
    names_of_servers = list(ResourceManager.get_multi_added_system_ids(session, all_systems).keys())
    return server_prefix, names_of_servers, batch1.keys()
def test_bulk_account_delete_generates_secret_with_ssh_accounts(
        clean_bulk_delete_systems_and_accounts, core_session,
        list_of_created_systems, secret_cleaner, core_tenant):
    batch1 = ResourceManager.add_multiple_ssh_systems_with_accounts(
        core_session,
        2,
        2,
        list_of_created_systems,
        system_prefix=f'test_ssh',
        user_prefix=f'test_usr_ssh')
    all_systems, all_accounts = DataManipulation.aggregate_lists_in_dict_values(
        [batch1])

    secret_name = "TestSecret-" + str(
        ResourceManager.time_mark_in_hours()) + "-" + guid()

    result, success = ResourceManager.del_multiple_accounts(
        core_session,
        all_accounts,
        save_passwords=True,
        secret_name=secret_name)
    assert success, "Api did not complete successfully for bulk account delete MSG: " + result

    ResourceManager.wait_for_secret_to_exist_or_timeout(
        core_session, secret_name)

    secret_id = RedrockController.get_secret_id_by_name(
        core_session, secret_name)
    assert secret_id is not None, "Secret not found"
    secret_cleaner.append(secret_id)
    assert len(
        ResourceManager.get_multi_added_account_ids(
            core_session,
            all_systems)) == 0, "Expected zero added accounts remain"

    user_name = core_tenant['admin_user']
    user_id = UserManager.get_user_id(core_session, user_name)
    result, success = set_users_effective_permissions(core_session, user_name,
                                                      "View,Edit,Retrieve",
                                                      user_id, secret_id)
    assert success, f"Did not set secret permission successfully with message {result}"

    secret_file_contents = get_file_secret_contents(core_session, secret_id)

    assert secret_file_contents.count("\n") == 1 + len(
        all_accounts
    ), f"Secret file contained the wrong number of lines {secret_file_contents}"
    assert secret_file_contents.count("AutomationTestKey") == len(
        all_accounts
    ), f"Secret file contained the wrong number of keys {secret_file_contents}"
    for server_id in all_systems:
        assert server_id in secret_file_contents, f"Server ID absent from secret file {secret_file_contents}"
    for account_id in all_accounts:
        assert account_id in secret_file_contents, f"Account ID absent from secret file {secret_file_contents}"
def test_bulk_system_delete_generates_secret(clean_bulk_delete_systems_and_accounts, core_session,
                                             list_of_created_systems, secret_cleaner, core_tenant):
    batch1 = ResourceManager.add_multiple_systems_with_accounts(core_session, 1, 4, list_of_created_systems)
    batch2 = ResourceManager.add_multiple_systems_with_accounts(core_session, 2, 3, list_of_created_systems)
    batch3 = ResourceManager.add_multiple_ssh_systems_with_accounts(core_session, 1, 1, list_of_created_systems)

    all_systems, all_accounts = DataManipulation.aggregate_lists_in_dict_values([batch1, batch2, batch3])
    all_non_ssh_systems, all_non_shh_accounts = DataManipulation.aggregate_lists_in_dict_values([batch1, batch2])

    secret_name = "TestSecret-" + str(ResourceManager.time_mark_in_hours()) + "-" + guid()

    sql_query = RedrockController.get_query_for_ids('Server', all_systems)
    ResourceManager.del_multiple_systems_by_query(core_session, sql_query, True, secret_name)

    ResourceManager.wait_for_secret_to_exist_or_timeout(core_session, secret_name)

    secret_id = RedrockController.get_secret_id_by_name(core_session, secret_name)

    assert secret_id is not None, "No secret was created"

    secret_cleaner.append(secret_id)
    user_name = core_tenant['admin_user']
    user_id = UserManager.get_user_id(core_session, user_name)

    result, success = set_users_effective_permissions(core_session, user_name, "View,Edit,Retrieve", user_id, secret_id)
    assert success, f"Did not set secret permission successfully with message {result}"

    secret_file_contents = get_file_secret_contents(core_session, secret_id)

    assert secret_file_contents.strip().count("\n") == len(
        all_accounts), f"Secret file contained the wrong number of lines {secret_file_contents}"
    assert secret_file_contents.count("thisIsaPAsSwO0rd") == len(
        all_non_shh_accounts), f"Secret file contained the wrong number of passwords {secret_file_contents}"
    # Commenting following assert as AutomationTestKey is not available in secret_file_contents, Tested on both AWS,
    # Azure devdog tenants
    # assert 'AutomationTestKey' in secret_file_contents, f"Name of SSH key did not appear in secret file {secret_file_contents}"
    for server_id in all_non_ssh_systems:
        assert server_id in secret_file_contents, f"Server ID absent from secret file {secret_file_contents}"
    for account_id in all_non_shh_accounts:
        assert account_id in secret_file_contents, f"Account ID absent from secret file {secret_file_contents}"