diff --git a/gitlab/tests/objects/test_audit_events.py b/gitlab/tests/objects/test_audit_events.py index 75bc11c04..aba778bb7 100644 --- a/gitlab/tests/objects/test_audit_events.py +++ b/gitlab/tests/objects/test_audit_events.py @@ -8,7 +8,11 @@ import pytest import responses -from gitlab.v4.objects.audit_events import ProjectAudit +from gitlab.v4.objects.audit_events import ( + AuditEvent, + GroupAuditEvent, + ProjectAuditEvent, +) id = 5 @@ -32,11 +36,11 @@ } audit_events_url = re.compile( - r"http://localhost/api/v4/((groups|projects)/1/)audit_events" + 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}" + rf"http://localhost/api/v4/((groups|projects)/1/)?audit_events/{id}" ) @@ -54,7 +58,7 @@ def resp_list_audit_events(): @pytest.fixture -def resp_get_variable(): +def resp_get_audit_event(): with responses.RequestsMock() as rsps: rsps.add( method=responses.GET, @@ -66,14 +70,40 @@ def resp_get_variable(): 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], ProjectAudit) + assert isinstance(audit_events[0], ProjectAuditEvent) assert audit_events[0].id == id -def test_get_project_audit_events(project, resp_get_variable): +def test_get_project_audit_events(project, resp_get_audit_event): audit_event = project.audit_events.get(id) - assert isinstance(audit_event, ProjectAudit) + assert isinstance(audit_event, ProjectAuditEvent) assert audit_event.id == id diff --git a/gitlab/v4/objects/__init__.py b/gitlab/v4/objects/__init__.py index 8a2ed7c37..ac9f861a3 100644 --- a/gitlab/v4/objects/__init__.py +++ b/gitlab/v4/objects/__init__.py @@ -18,6 +18,7 @@ from .access_requests import * from .appearance import * from .applications import * +from .audit_events import * from .award_emojis import * from .badges import * from .boards import * diff --git a/gitlab/v4/objects/audit_events.py b/gitlab/v4/objects/audit_events.py index d9d411948..c99856a9e 100644 --- a/gitlab/v4/objects/audit_events.py +++ b/gitlab/v4/objects/audit_events.py @@ -1,23 +1,75 @@ """ GitLab API: -https://docs.gitlab.com/ee/api/audit_events.html#project-audit-events +https://docs.gitlab.com/ee/api/audit_events.html """ +import warnings from gitlab.base import RESTManager, RESTObject from gitlab.mixins import RetrieveMixin __all__ = [ + "AuditEvent", + "AuditEventManager", + "GroupAuditEvent", + "GroupAuditEventManager", + "ProjectAuditEvent", + "ProjectAuditEventManager", "ProjectAudit", "ProjectAuditManager", ] -class ProjectAudit(RESTObject): +class AuditEvent(RESTObject): _id_attr = "id" -class ProjectAuditManager(RetrieveMixin, RESTManager): +class AuditEventManager(RetrieveMixin, RESTManager): + _path = "/audit_events" + _obj_cls = AuditEvent + _list_filters = ("created_after", "created_before", "entity_type", "entity_id") + + +class GroupAuditEvent(RESTObject): + _id_attr = "id" + + +class GroupAuditEventManager(RetrieveMixin, RESTManager): + _path = "/groups/%(group_id)s/audit_events" + _obj_cls = GroupAuditEvent + _from_parent_attrs = {"group_id": "id"} + _list_filters = ("created_after", "created_before") + + +class ProjectAuditEvent(RESTObject): + _id_attr = "id" + + def __init_subclass__(self): + warnings.warn( + "This class has been renamed to ProjectAuditEvent " + "and will be removed in a future release.", + DeprecationWarning, + 2, + ) + + +class ProjectAuditEventManager(RetrieveMixin, RESTManager): _path = "/projects/%(project_id)s/audit_events" - _obj_cls = ProjectAudit + _obj_cls = ProjectAuditEvent _from_parent_attrs = {"project_id": "id"} _list_filters = ("created_after", "created_before") + + def __init_subclass__(self): + warnings.warn( + "This class has been renamed to ProjectAuditEventManager " + "and will be removed in a future release.", + DeprecationWarning, + 2, + ) + + +class ProjectAudit(ProjectAuditEvent): + pass + + +class ProjectAuditManager(ProjectAuditEventManager): + pass diff --git a/gitlab/v4/objects/events.py b/gitlab/v4/objects/events.py index 43eba8d64..d1c3cb4a9 100644 --- a/gitlab/v4/objects/events.py +++ b/gitlab/v4/objects/events.py @@ -6,8 +6,6 @@ __all__ = [ "Event", "EventManager", - "AuditEvent", - "AuditEventManager", "GroupEpicResourceLabelEvent", "GroupEpicResourceLabelEventManager", "ProjectEvent", @@ -36,16 +34,6 @@ class EventManager(ListMixin, RESTManager): _list_filters = ("action", "target_type", "before", "after", "sort") -class AuditEvent(RESTObject): - _id_attr = "id" - - -class AuditEventManager(ListMixin, RESTManager): - _path = "/audit_events" - _obj_cls = AuditEvent - _list_filters = ("created_after", "created_before", "entity_type", "entity_id") - - class GroupEpicResourceLabelEvent(RESTObject): pass diff --git a/gitlab/v4/objects/groups.py b/gitlab/v4/objects/groups.py index d96acfd5e..e859e0e9d 100644 --- a/gitlab/v4/objects/groups.py +++ b/gitlab/v4/objects/groups.py @@ -3,6 +3,7 @@ from gitlab.base import RESTManager, RESTObject from gitlab.mixins import CRUDMixin, ListMixin, ObjectDeleteMixin, SaveMixin from .access_requests import GroupAccessRequestManager +from .audit_events import GroupAuditEventManager from .badges import GroupBadgeManager from .boards import GroupBoardManager from .custom_attributes import GroupCustomAttributeManager @@ -34,6 +35,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject): _short_print_attr = "name" _managers = ( ("accessrequests", "GroupAccessRequestManager"), + ("audit_events", "GroupAuditEventManager"), ("badges", "GroupBadgeManager"), ("boards", "GroupBoardManager"), ("customattributes", "GroupCustomAttributeManager"), diff --git a/gitlab/v4/objects/projects.py b/gitlab/v4/objects/projects.py index c187ba95f..f4de18df7 100644 --- a/gitlab/v4/objects/projects.py +++ b/gitlab/v4/objects/projects.py @@ -25,7 +25,7 @@ from .deployments import ProjectDeploymentManager from .environments import ProjectEnvironmentManager from .events import ProjectEventManager -from .audit_events import ProjectAuditManager +from .audit_events import ProjectAuditEventManager from .export_import import ProjectExportManager, ProjectImportManager from .files import ProjectFileManager from .hooks import ProjectHookManager @@ -117,7 +117,7 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO ("deployments", "ProjectDeploymentManager"), ("environments", "ProjectEnvironmentManager"), ("events", "ProjectEventManager"), - ("audit_events", "ProjectAuditManager"), + ("audit_events", "ProjectAuditEventManager"), ("exports", "ProjectExportManager"), ("files", "ProjectFileManager"), ("forks", "ProjectForkManager"),