summaryrefslogtreecommitdiff
path: root/tests/unit/objects/test_audit_events.py
blob: aba778bb7d41dd19fb8c8eb53e0ba1bac22f1a3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
"""
GitLab API:
https://docs.gitlab.com/ee/api/audit_events.html#project-audit-events
"""

import re

import pytest
import responses

from gitlab.v4.objects.audit_events import (
    AuditEvent,
    GroupAuditEvent,
    ProjectAuditEvent,
)

id = 5

audit_events_content = {
    "id": 5,
    "author_id": 1,
    "entity_id": 7,
    "entity_type": "Project",
    "details": {
        "change": "prevent merge request approval from reviewers",
        "from": "",
        "to": "true",
        "author_name": "Administrator",
        "target_id": 7,
        "target_type": "Project",
        "target_details": "twitter/typeahead-js",
        "ip_address": "127.0.0.1",
        "entity_path": "twitter/typeahead-js",
    },
    "created_at": "2020-05-26T22:55:04.230Z",
}

audit_events_url = re.compile(
    r"http://localhost/api/v4/((groups|projects)/1/)?audit_events"
)

audit_events_url_id = re.compile(
    rf"http://localhost/api/v4/((groups|projects)/1/)?audit_events/{id}"
)


@pytest.fixture
def resp_list_audit_events():
    with responses.RequestsMock() as rsps:
        rsps.add(
            method=responses.GET,
            url=audit_events_url,
            json=[audit_events_content],
            content_type="application/json",
            status=200,
        )
        yield rsps


@pytest.fixture
def resp_get_audit_event():
    with responses.RequestsMock() as rsps:
        rsps.add(
            method=responses.GET,
            url=audit_events_url_id,
            json=audit_events_content,
            content_type="application/json",
            status=200,
        )
        yield rsps


def test_list_instance_audit_events(gl, resp_list_audit_events):
    audit_events = gl.audit_events.list()
    assert isinstance(audit_events, list)
    assert isinstance(audit_events[0], AuditEvent)
    assert audit_events[0].id == id


def test_get_instance_audit_events(gl, resp_get_audit_event):
    audit_event = gl.audit_events.get(id)
    assert isinstance(audit_event, AuditEvent)
    assert audit_event.id == id


def test_list_group_audit_events(group, resp_list_audit_events):
    audit_events = group.audit_events.list()
    assert isinstance(audit_events, list)
    assert isinstance(audit_events[0], GroupAuditEvent)
    assert audit_events[0].id == id


def test_get_group_audit_events(group, resp_get_audit_event):
    audit_event = group.audit_events.get(id)
    assert isinstance(audit_event, GroupAuditEvent)
    assert audit_event.id == id


def test_list_project_audit_events(project, resp_list_audit_events):
    audit_events = project.audit_events.list()
    assert isinstance(audit_events, list)
    assert isinstance(audit_events[0], ProjectAuditEvent)
    assert audit_events[0].id == id


def test_get_project_audit_events(project, resp_get_audit_event):
    audit_event = project.audit_events.get(id)
    assert isinstance(audit_event, ProjectAuditEvent)
    assert audit_event.id == id