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

Lines changed: 37 additions & 7 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 56 additions & 4 deletions
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

Lines changed: 0 additions & 12 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 2 additions & 2 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy