Skip to content

Commit 02ce49e

Browse files
authored
Merge pull request #1363 from python-gitlab/feat/all-audit-events
Feat: cover all audit events
2 parents e798c9b + 2a0fbdf commit 02ce49e

File tree

6 files changed

+98
-25
lines changed

6 files changed

+98
-25
lines changed

gitlab/tests/objects/test_audit_events.py

+37-7
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
import pytest
99
import responses
1010

11-
from gitlab.v4.objects.audit_events import ProjectAudit
11+
from gitlab.v4.objects.audit_events import (
12+
AuditEvent,
13+
GroupAuditEvent,
14+
ProjectAuditEvent,
15+
)
1216

1317
id = 5
1418

@@ -32,11 +36,11 @@
3236
}
3337

3438
audit_events_url = re.compile(
35-
r"http://localhost/api/v4/((groups|projects)/1/)audit_events"
39+
r"http://localhost/api/v4/((groups|projects)/1/)?audit_events"
3640
)
3741

3842
audit_events_url_id = re.compile(
39-
rf"http://localhost/api/v4/((groups|projects)/1/)audit_events/{id}"
43+
rf"http://localhost/api/v4/((groups|projects)/1/)?audit_events/{id}"
4044
)
4145

4246

@@ -54,7 +58,7 @@ def resp_list_audit_events():
5458

5559

5660
@pytest.fixture
57-
def resp_get_variable():
61+
def resp_get_audit_event():
5862
with responses.RequestsMock() as rsps:
5963
rsps.add(
6064
method=responses.GET,
@@ -66,14 +70,40 @@ def resp_get_variable():
6670
yield rsps
6771

6872

73+
def test_list_instance_audit_events(gl, resp_list_audit_events):
74+
audit_events = gl.audit_events.list()
75+
assert isinstance(audit_events, list)
76+
assert isinstance(audit_events[0], AuditEvent)
77+
assert audit_events[0].id == id
78+
79+
80+
def test_get_instance_audit_events(gl, resp_get_audit_event):
81+
audit_event = gl.audit_events.get(id)
82+
assert isinstance(audit_event, AuditEvent)
83+
assert audit_event.id == id
84+
85+
86+
def test_list_group_audit_events(group, resp_list_audit_events):
87+
audit_events = group.audit_events.list()
88+
assert isinstance(audit_events, list)
89+
assert isinstance(audit_events[0], GroupAuditEvent)
90+
assert audit_events[0].id == id
91+
92+
93+
def test_get_group_audit_events(group, resp_get_audit_event):
94+
audit_event = group.audit_events.get(id)
95+
assert isinstance(audit_event, GroupAuditEvent)
96+
assert audit_event.id == id
97+
98+
6999
def test_list_project_audit_events(project, resp_list_audit_events):
70100
audit_events = project.audit_events.list()
71101
assert isinstance(audit_events, list)
72-
assert isinstance(audit_events[0], ProjectAudit)
102+
assert isinstance(audit_events[0], ProjectAuditEvent)
73103
assert audit_events[0].id == id
74104

75105

76-
def test_get_project_audit_events(project, resp_get_variable):
106+
def test_get_project_audit_events(project, resp_get_audit_event):
77107
audit_event = project.audit_events.get(id)
78-
assert isinstance(audit_event, ProjectAudit)
108+
assert isinstance(audit_event, ProjectAuditEvent)
79109
assert audit_event.id == id

gitlab/v4/objects/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from .access_requests import *
1919
from .appearance import *
2020
from .applications import *
21+
from .audit_events import *
2122
from .award_emojis import *
2223
from .badges import *
2324
from .boards import *

gitlab/v4/objects/audit_events.py

+56-4
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,75 @@
11
"""
22
GitLab API:
3-
https://docs.gitlab.com/ee/api/audit_events.html#project-audit-events
3+
https://docs.gitlab.com/ee/api/audit_events.html
44
"""
5+
import warnings
56

67
from gitlab.base import RESTManager, RESTObject
78
from gitlab.mixins import RetrieveMixin
89

910
__all__ = [
11+
"AuditEvent",
12+
"AuditEventManager",
13+
"GroupAuditEvent",
14+
"GroupAuditEventManager",
15+
"ProjectAuditEvent",
16+
"ProjectAuditEventManager",
1017
"ProjectAudit",
1118
"ProjectAuditManager",
1219
]
1320

1421

15-
class ProjectAudit(RESTObject):
22+
class AuditEvent(RESTObject):
1623
_id_attr = "id"
1724

1825

19-
class ProjectAuditManager(RetrieveMixin, RESTManager):
26+
class AuditEventManager(RetrieveMixin, RESTManager):
27+
_path = "/audit_events"
28+
_obj_cls = AuditEvent
29+
_list_filters = ("created_after", "created_before", "entity_type", "entity_id")
30+
31+
32+
class GroupAuditEvent(RESTObject):
33+
_id_attr = "id"
34+
35+
36+
class GroupAuditEventManager(RetrieveMixin, RESTManager):
37+
_path = "/groups/%(group_id)s/audit_events"
38+
_obj_cls = GroupAuditEvent
39+
_from_parent_attrs = {"group_id": "id"}
40+
_list_filters = ("created_after", "created_before")
41+
42+
43+
class ProjectAuditEvent(RESTObject):
44+
_id_attr = "id"
45+
46+
def __init_subclass__(self):
47+
warnings.warn(
48+
"This class has been renamed to ProjectAuditEvent "
49+
"and will be removed in a future release.",
50+
DeprecationWarning,
51+
2,
52+
)
53+
54+
55+
class ProjectAuditEventManager(RetrieveMixin, RESTManager):
2056
_path = "/projects/%(project_id)s/audit_events"
21-
_obj_cls = ProjectAudit
57+
_obj_cls = ProjectAuditEvent
2258
_from_parent_attrs = {"project_id": "id"}
2359
_list_filters = ("created_after", "created_before")
60+
61+
def __init_subclass__(self):
62+
warnings.warn(
63+
"This class has been renamed to ProjectAuditEventManager "
64+
"and will be removed in a future release.",
65+
DeprecationWarning,
66+
2,
67+
)
68+
69+
70+
class ProjectAudit(ProjectAuditEvent):
71+
pass
72+
73+
74+
class ProjectAuditManager(ProjectAuditEventManager):
75+
pass

gitlab/v4/objects/events.py

-12
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
__all__ = [
77
"Event",
88
"EventManager",
9-
"AuditEvent",
10-
"AuditEventManager",
119
"GroupEpicResourceLabelEvent",
1210
"GroupEpicResourceLabelEventManager",
1311
"ProjectEvent",
@@ -36,16 +34,6 @@ class EventManager(ListMixin, RESTManager):
3634
_list_filters = ("action", "target_type", "before", "after", "sort")
3735

3836

39-
class AuditEvent(RESTObject):
40-
_id_attr = "id"
41-
42-
43-
class AuditEventManager(ListMixin, RESTManager):
44-
_path = "/audit_events"
45-
_obj_cls = AuditEvent
46-
_list_filters = ("created_after", "created_before", "entity_type", "entity_id")
47-
48-
4937
class GroupEpicResourceLabelEvent(RESTObject):
5038
pass
5139

gitlab/v4/objects/groups.py

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from gitlab.base import RESTManager, RESTObject
44
from gitlab.mixins import CRUDMixin, ListMixin, ObjectDeleteMixin, SaveMixin
55
from .access_requests import GroupAccessRequestManager
6+
from .audit_events import GroupAuditEventManager
67
from .badges import GroupBadgeManager
78
from .boards import GroupBoardManager
89
from .custom_attributes import GroupCustomAttributeManager
@@ -34,6 +35,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject):
3435
_short_print_attr = "name"
3536
_managers = (
3637
("accessrequests", "GroupAccessRequestManager"),
38+
("audit_events", "GroupAuditEventManager"),
3739
("badges", "GroupBadgeManager"),
3840
("boards", "GroupBoardManager"),
3941
("customattributes", "GroupCustomAttributeManager"),

gitlab/v4/objects/projects.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from .deployments import ProjectDeploymentManager
2626
from .environments import ProjectEnvironmentManager
2727
from .events import ProjectEventManager
28-
from .audit_events import ProjectAuditManager
28+
from .audit_events import ProjectAuditEventManager
2929
from .export_import import ProjectExportManager, ProjectImportManager
3030
from .files import ProjectFileManager
3131
from .hooks import ProjectHookManager
@@ -117,7 +117,7 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
117117
("deployments", "ProjectDeploymentManager"),
118118
("environments", "ProjectEnvironmentManager"),
119119
("events", "ProjectEventManager"),
120-
("audit_events", "ProjectAuditManager"),
120+
("audit_events", "ProjectAuditEventManager"),
121121
("exports", "ProjectExportManager"),
122122
("files", "ProjectFileManager"),
123123
("forks", "ProjectForkManager"),

0 commit comments

Comments
 (0)