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"),
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: