コード例 #1
0
def test_get_space_name(http_mock, _, __, ___, instance, space_v2, space_v3):
    check = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
    with mock.patch.object(check, "get_oauth_token"), mock.patch.object(
            check, "log") as log_mock:
        # Cache access
        assert check._spaces["space_guid"] == "space_name"
        assert check.get_space_name("space_guid") == "space_name"
        http_mock.get.assert_not_called()

        # Cache miss
        # v2
        http_mock.get.return_value = mock.MagicMock(json=mock.MagicMock(
            return_value=space_v2))
        check._api_version = "v2"
        assert check.get_space_name("new_id") == "space_1"
        assert check._spaces["new_id"] == "space_1"
        http_mock.get.assert_called_once_with(
            "https://api.sys.domain.com/v2/spaces/new_id",
            headers={"Authorization": "Bearer {}".format(check._oauth_token)},
        )
        # v3
        http_mock.get.reset_mock()
        http_mock.get.return_value = mock.MagicMock(json=mock.MagicMock(
            return_value=space_v3))
        check._api_version = "v3"
        assert check.get_space_name("new_id_2") == "space_1"
        assert check._spaces["new_id_2"] == "space_1"
        http_mock.get.assert_called_once_with(
            "https://api.sys.domain.com/v3/spaces/new_id_2",
            headers={"Authorization": "Bearer {}".format(check._oauth_token)},
        )
        # Error
        http_mock.get.side_effect = RequestException
        assert check.get_space_name("id_error") is None
        log_mock.exception.assert_called_once()
コード例 #2
0
def test_get_spaces(_, __, instance, spaces_v2_p1, spaces_v2_p2, spaces_v3_p1,
                    spaces_v3_p2):
    expected_spaces = {
        "417b893e-291e-48ec-94c7-7b2348604365": "space_1",
        "1b8dcf2e-ed92-4daa-b9fb-0fa5a97b9289": "space_2",
        "d5d005a4-0320-4daa-ac0a-81f8dcd00fe0": "space_3",
        "8c7e64bb-0bf8-4a7a-92e1-2fe06e7ec793": "space_4",
    }
    with mock.patch.object(CloudFoundryApiCheck,
                           "scroll_api_pages",
                           return_value=[spaces_v2_p1,
                                         spaces_v2_p2]), mock.patch.object(
                                             CloudFoundryApiCheck,
                                             "get_oauth_token"):
        check = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
        check._api_version = "v2"

        assert check.get_spaces() == expected_spaces

    with mock.patch.object(CloudFoundryApiCheck,
                           "scroll_api_pages",
                           return_value=[spaces_v3_p1,
                                         spaces_v3_p2]), mock.patch.object(
                                             CloudFoundryApiCheck,
                                             "get_oauth_token"):
        check = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
        check._api_version = "v3"

        assert check.get_spaces() == expected_spaces
コード例 #3
0
def test_get_orgs(_, __, instance, orgs_v2_p1, orgs_v2_p2, orgs_v3_p1,
                  orgs_v3_p2):
    expected_orgs = {
        "671557cf-edcd-49df-9863-ee14513d13c7": "org_1",
        "8c19a50e-7974-4c67-adea-9640fae21526": "org_2",
        "321c58b0-777b-472f-812e-c08c53817074": "org_3",
        "0ba4c8cb-9e71-4d6e-b6ff-74e301ed6467": "org_4",
    }
    with mock.patch.object(CloudFoundryApiCheck,
                           "scroll_api_pages",
                           return_value=[orgs_v2_p1,
                                         orgs_v2_p2]), mock.patch.object(
                                             CloudFoundryApiCheck,
                                             "get_oauth_token"):
        check = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
        check._api_version = "v2"

        assert check.get_orgs() == expected_orgs

    with mock.patch.object(CloudFoundryApiCheck,
                           "scroll_api_pages",
                           return_value=[orgs_v3_p1,
                                         orgs_v3_p2]), mock.patch.object(
                                             CloudFoundryApiCheck,
                                             "get_oauth_token"):
        check = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
        check._api_version = "v3"

        assert check.get_orgs() == expected_orgs
コード例 #4
0
def test_get_events(_, __, ___, instance, dd_events):
    scroll_events_mock = mock.MagicMock(return_value=dd_events)
    with mock.patch.object(CloudFoundryApiCheck, "scroll_events", scroll_events_mock), mock.patch.object(
        CloudFoundryApiCheck, "get_oauth_token"
    ) as get_oauth_token_mock:
        check_v2 = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
        check_v2._api_version = "v2"
        check_v3 = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])
        check_v3._api_version = "v3"

        def side_effect():
            check_v2._oauth_token = "oauth_token_v2"
            check_v3._oauth_token = "oauth_token_v3"

        get_oauth_token_mock.side_effect = side_effect

        events_v2 = check_v2.get_events()
        assert events_v2 == dd_events
        scroll_events_mock.assert_called_once_with(
            "https://api.sys.domain.com/v2/events",
            {"q": "type IN audit1,audit2", "results-per-page": 45, "order-by": "timestamp", "order-direction": "desc"},
            {"Authorization": "Bearer oauth_token_v2"},
        )

        scroll_events_mock.reset_mock()
        events_v3 = check_v3.get_events()
        assert events_v3 == dd_events
        scroll_events_mock.assert_called_once_with(
            "https://api.sys.domain.com/v3/audit_events",
            {"types": "audit1,audit2", "per_page": 45, "order_by": "-created_at"},
            {"Authorization": "Bearer oauth_token_v3"},
        )
コード例 #5
0
def test_parse_event(build_dd_event_mock, _, __, ___, ____, event_v2, event_v3,
                     instance):
    check = CloudFoundryApiCheck('cloud_foundry_api', {}, [instance])

    # v2
    check._api_version = "v2"
    _, event_guid, event_ts = check.parse_event(event_v2)
    assert event_guid == "event_guid"
    assert event_ts == FREEZE_TIME
    build_dd_event_mock.assert_called_once_with(
        "event_type",
        "event_guid",
        FREEZE_TIME,
        "actor_type",
        "actor_name",
        "actor_guid",
        "target_type",
        "target_name",
        "target_guid",
        "space_guid",
        "org_guid",
        {"some": "metadata"},
    )

    # v3
    check._api_version = "v3"
    build_dd_event_mock.reset_mock()
    _, event_guid, event_ts = check.parse_event(event_v3)
    assert event_guid == "event_guid"
    assert event_ts == FREEZE_TIME
    build_dd_event_mock.assert_called_once_with(
        "event_type",
        "event_guid",
        FREEZE_TIME,
        "actor_type",
        "actor_name",
        "actor_guid",
        "target_type",
        "target_name",
        "target_guid",
        "space_guid",
        "org_guid",
        {"some": "metadata"},
    )