def test_build_results_2xx_status():
    json_data = util_load_json('test_data/User.json')
    response = util_mock_http_resp(200, json_data)
    results = SailPointIdentityIQ.build_results('IdentityIQ.Identity',
                                                'IdentityIQ.Identity',
                                                response)
    assert results.readable_output == '### Results:\n' + SailPointIdentityIQ.get_markdown(
        'IdentityIQ.Identity', json_data)
    assert results.outputs_prefix == 'IdentityIQ.Identity'
    assert results.outputs_key_field == 'IdentityIQ.Identity'
    verify_user(results.outputs)
def test_change_account_disable(mock_account):
    mock_account.return_value = util_load_json(
        'test_data/Account_Disabled.json')
    account = SailPointIdentityIQ.change_account_status(
        MOCK_CLIENT, '7f00000174441779817444c883c30016', False)
    verify_account(account)
    assert account['active'] is False
def test_get_accounts_identity_name_not_matched(mock_accounts_response):
    json_data = util_load_json('test_data/NoResources.json')
    mock_accounts_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_accounts(MOCK_CLIENT, None, None, None,
                                                None, None, 'Black Jack', None)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 0)
def test_transform_object():
    json_data = util_load_json('test_data/User.json')
    data = SailPointIdentityIQ.transform_object('IdentityIQ.Identity',
                                                json_data)
    assert data == json_data
    assert 'sailpointUser' in data
    assert 'sailpointUser' in json_data
def test_get_launched_workflows_no_resources(mock_launched_workflows_response):
    json_data = util_load_json('test_data/NoResources.json')
    mock_launched_workflows_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.get_launched_workflows(MOCK_CLIENT, None)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 0)
def test_get_roles_id_found(mock_roles_response):
    json_data = util_load_json('test_data/Role.json')
    mock_roles_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_roles(
        MOCK_CLIENT, '7f000001705911b4817059d31239035f')
    assert response.status_code == 200
    verify_role(response.json())
def test_get_alerts_id_found(mock_alerts_response):
    json_data = util_load_json('test_data/Alert.json')
    mock_alerts_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_alerts(
        MOCK_CLIENT, '0a000001758a173e81763f81205e0062')
    assert response.status_code == 200
    verify_alert(response.json())
def test_get_task_results_id_found(mock_task_results_response):
    json_data = util_load_json('test_data/TaskResult.json')
    mock_task_results_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.get_task_results(
        MOCK_CLIENT, '7f00000175891f4b81763bd2181c1d5f')
    assert response.status_code == 200
    verify_task_result(response.json())
def test_get_entitlements_id_found(mock_entitlements_response):
    json_data = util_load_json('test_data/Entitlement.json')
    mock_entitlements_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.get_entitlements(
        MOCK_CLIENT, '7f000001705911b4817059d355840657')
    assert response.status_code == 200
    verify_entitlement(response.json())
def test_get_launched_workflows_id_found(mock_launched_workflows_response):
    json_data = util_load_json('test_data/LaunchedWorkflow.json')
    mock_launched_workflows_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.get_launched_workflows(
        MOCK_CLIENT, '7f00000173de18fa8173deb1064e001c')
    assert response.status_code == 200
    verify_launched_workflow(response.json())
def test_search_identities_active_false(mock_search_identities_response):
    json_data = util_load_json('test_data/NoResources.json')
    mock_search_identities_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.search_identities(MOCK_CLIENT, None, None,
                                                     0, True)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 0)
def test_get_roles(mock_roles_response):
    json_data = util_load_json('test_data/Roles.json')
    mock_roles_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_roles(MOCK_CLIENT, None)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 5)
    for role in response.json()['Resources']:
        verify_role(role)
def test_get_accounts_id_found(mock_accounts_response):
    json_data = util_load_json('test_data/Account.json')
    mock_accounts_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_accounts(
        MOCK_CLIENT, '7f00000174441779817444c8837c0014', None, None, None,
        None, None, None)
    assert response.status_code == 200
    verify_account(response.json())
def test_get_policy_violations(mock_policy_violations_response):
    json_data = util_load_json('test_data/PolicyViolations.json')
    mock_policy_violations_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.get_policy_violations(MOCK_CLIENT, None)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 2)
    for policy_violation in response.json()['Resources']:
        verify_policy_violation(policy_violation)
def test_get_policy_violations_id_found(mock_policy_violations_response):
    json_data = util_load_json('test_data/PolicyViolation.json')
    mock_policy_violations_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.get_policy_violations(
        MOCK_CLIENT, '8a8080824df45873014df46036521328')
    assert response.status_code == 200
    verify_policy_violation(response.json())
    assert response.json()['id'] == '8a8080824df45873014df46036521328'
def test_get_alerts_id_not_found(mock_alerts_response):
    json_data = util_load_json('test_data/404_Not_Found.json')
    mock_alerts_response.return_value = util_mock_http_resp(404, json_data)
    response = SailPointIdentityIQ.get_alerts(
        MOCK_CLIENT, '0a000001758a173e81763f81205e6453')
    assert response.status_code == 404
    assert 'urn:ietf:params:scim:api:messages:2.0:Error' in response.json(
    )['schemas']
    assert response.json()['status'] == '404'
def test_search_identities_id_found(mock_search_identities_response):
    json_data = util_load_json('test_data/User.json')
    mock_search_identities_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.search_identities(
        MOCK_CLIENT, '7f00000174441779817444c8842b0017', None, 0, True)
    assert response.status_code == 200
    verify_user(response.json())
    assert response.json()['id'] == '7f00000174441779817444c8842b0017'
def test_get_roles_id_not_found(mock_roles_response):
    json_data = util_load_json('test_data/404_Not_Found.json')
    mock_roles_response.return_value = util_mock_http_resp(404, json_data)
    response = SailPointIdentityIQ.get_roles(
        MOCK_CLIENT, '7f000001705911b4817059d312394432')
    assert response.status_code == 404
    assert 'urn:ietf:params:scim:api:messages:2.0:Error' in response.json(
    )['schemas']
    assert response.json()['status'] == '404'
def test_get_markdown_objects_none():
    markdown = SailPointIdentityIQ.get_markdown('IdentityIQ.Identity', None)
    headers = [
        'id', 'userName', 'displayName', 'name', 'emails', 'sailpointUser',
        'extendedUser', 'entitlements', 'roles', 'capabilities', 'active'
    ]
    assert markdown == tableToMarkdown('Identity(Identities)',
                                       None,
                                       headers=headers)
def test_get_policy_violations_id_not_found(mock_policy_violations_response):
    json_data = util_load_json('test_data/404_Not_Found.json')
    mock_policy_violations_response.return_value = util_mock_http_resp(
        404, json_data)
    response = SailPointIdentityIQ.get_policy_violations(
        MOCK_CLIENT, '8a8080824df45873014df46036521343')
    assert response.status_code == 404
    assert 'urn:ietf:params:scim:api:messages:2.0:Error' in response.json(
    )['schemas']
    assert response.json()['status'] == '404'
def test_get_launched_workflows_id_not_found(mock_launched_workflows_response):
    json_data = util_load_json('test_data/404_Not_Found.json')
    mock_launched_workflows_response.return_value = util_mock_http_resp(
        404, json_data)
    response = SailPointIdentityIQ.get_launched_workflows(
        MOCK_CLIENT, '7f00000173de18fa8173deb1064e0453')
    assert response.status_code == 404
    assert 'urn:ietf:params:scim:api:messages:2.0:Error' in response.json(
    )['schemas']
    assert response.json()['status'] == '404'
def test_get_accounts(mock_accounts_response):
    json_data = util_load_json('test_data/Accounts.json')
    mock_accounts_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_accounts(MOCK_CLIENT, None, None,
                                                '2020-05-01T00:00:00Z', None,
                                                None, None, None)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 3)
    for account in response.json()['Resources']:
        verify_account(account)
def test_search_identities_id_not_found(mock_search_identities_response):
    json_data = util_load_json('test_data/404_Not_Found.json')
    mock_search_identities_response.return_value = util_mock_http_resp(
        404, json_data)
    response = SailPointIdentityIQ.search_identities(
        MOCK_CLIENT, '7f000001705911b4817059d30cf50348', None, 0, True)
    assert response.status_code == 404
    assert response.json()['status'] == '404'
    assert response.json(
    )['detail'] == 'Resource 7f000001705911b4817059d30cf50348 not found.'
def test_get_accounts_id_not_found(mock_accounts_response):
    json_data = util_load_json('test_data/404_Not_Found.json')
    mock_accounts_response.return_value = util_mock_http_resp(404, json_data)
    response = SailPointIdentityIQ.get_accounts(
        MOCK_CLIENT, '7f00000174441779817444c8837c5373', None, None, None,
        None, None, None)
    assert response.status_code == 404
    assert 'urn:ietf:params:scim:api:messages:2.0:Error' in response.json(
    )['schemas']
    assert response.json()['status'] == '404'
def test_get_markdown():
    json_data = util_load_json('test_data/User.json')
    markdown = SailPointIdentityIQ.get_markdown('IdentityIQ.Identity',
                                                json_data)
    headers = [
        'id', 'userName', 'displayName', 'name', 'emails', 'sailpointUser',
        'extendedUser', 'entitlements', 'roles', 'capabilities', 'active'
    ]
    assert markdown == tableToMarkdown('Identity(Identities)',
                                       json_data,
                                       headers=headers)
def test_search_identities_active_true(mock_search_identities_response):
    json_data = util_load_json('test_data/Users.json')
    mock_search_identities_response.return_value = util_mock_http_resp(
        200, json_data)
    response = SailPointIdentityIQ.search_identities(MOCK_CLIENT, None, None,
                                                     0, True)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 5)
    for user in response.json()['Resources']:
        verify_user(user)
        assert user['active'] is True
def test_get_headers_success(mock_header):
    mock_header.return_value = {
        'Authorization':
        'Bearer RXAxTEQ0ZkhUVm94dmhIWDd1M2Q0TjU3NDRnQUYzN2ouZXVlV2h1WUk4OW9jMi95Zml',
        'Content-Type': 'application/json'
    }
    headers = SailPointIdentityIQ.get_headers(MOCK_IDENTITYIQ_BASE_URL, 'test',
                                              'test', 'client_credentials')
    assert headers[
        'Authorization'] == 'Bearer RXAxTEQ0ZkhUVm94dmhIWDd1M2Q0TjU3NDRnQUYzN2ouZXVlV2h1WUk4OW9jMi95Zml'
    assert headers['Content-Type'] == 'application/json'
def test_transform_object_list():
    json_data = util_load_json('test_data/Users.json')
    data_list = SailPointIdentityIQ.transform_object_list(
        'IdentityIQ.Identity', json_data['Resources'])
    assert data_list == json_data['Resources']

    for data in data_list:
        assert 'sailpointUser' in data

    for resource in json_data['Resources']:
        assert 'sailpointUser' in resource
def test_get_accounts_application_name_matched(mock_accounts_response):
    json_data = util_load_json('test_data/Account_Filtered.json')
    mock_accounts_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_accounts(MOCK_CLIENT, None, None, None,
                                                None, None, None, 'SCIM SDK')
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 1)
    account = response.json()['Resources'][0]
    verify_account(account)
    assert account['id'] == '7f00000174441779817444c883c30016'
    assert account['application']['displayName'] == 'SCIM SDK'
def test_get_accounts_native_identity_found(mock_accounts_response):
    json_data = util_load_json('test_data/Account_Filtered.json')
    mock_accounts_response.return_value = util_mock_http_resp(200, json_data)
    response = SailPointIdentityIQ.get_accounts(MOCK_CLIENT, None, None, None,
                                                'bjack', None, None, None)
    assert response.status_code == 200
    verify_scim_list_response(response.json(), 1)
    account = response.json()['Resources'][0]
    verify_account(account)
    assert account['id'] == '7f00000174441779817444c883c30016'
    assert account['nativeIdentity'] == 'bjack'