From 48ba88ffb983207da398ea2170c867f87a8898e9 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 7 Mar 2021 12:23:39 +0100 Subject: [PATCH 1/5] refactor(objects): move instance audit events where they belong --- gitlab/v4/objects/audit_events.py | 14 +++++++++++++- gitlab/v4/objects/events.py | 12 ------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gitlab/v4/objects/audit_events.py b/gitlab/v4/objects/audit_events.py index d9d411948..5d1309c79 100644 --- a/gitlab/v4/objects/audit_events.py +++ b/gitlab/v4/objects/audit_events.py @@ -1,17 +1,29 @@ """ GitLab API: -https://docs.gitlab.com/ee/api/audit_events.html#project-audit-events +https://docs.gitlab.com/ee/api/audit_events.html """ from gitlab.base import RESTManager, RESTObject from gitlab.mixins import RetrieveMixin __all__ = [ + "AuditEvent", + "AuditEventManager", "ProjectAudit", "ProjectAuditManager", ] +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 ProjectAudit(RESTObject): _id_attr = "id" 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 From c3f0a6f158fbc7d90544274b9bf09d5ac9ac0060 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 7 Mar 2021 12:24:45 +0100 Subject: [PATCH 2/5] fix(objects): add single get endpoint for instance audit events --- gitlab/v4/objects/audit_events.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitlab/v4/objects/audit_events.py b/gitlab/v4/objects/audit_events.py index 5d1309c79..a4437be29 100644 --- a/gitlab/v4/objects/audit_events.py +++ b/gitlab/v4/objects/audit_events.py @@ -18,7 +18,7 @@ class AuditEvent(RESTObject): _id_attr = "id" -class AuditEventManager(ListMixin, RESTManager): +class AuditEventManager(RetrieveMixin, RESTManager): _path = "/audit_events" _obj_cls = AuditEvent _list_filters = ("created_after", "created_before", "entity_type", "entity_id") From 35a190cfa0902d6a298aba0a3135c5a99edfe0fa Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 7 Mar 2021 12:30:44 +0100 Subject: [PATCH 3/5] chore: import audit events in objects --- gitlab/v4/objects/__init__.py | 1 + 1 file changed, 1 insertion(+) 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 * From 84e3247d0cd3ddb1f3aa0ac91fb977c3e1e197b5 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 7 Mar 2021 12:44:59 +0100 Subject: [PATCH 4/5] test(objects): add unit test for instance audit events --- gitlab/tests/objects/test_audit_events.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/gitlab/tests/objects/test_audit_events.py b/gitlab/tests/objects/test_audit_events.py index 75bc11c04..8da77ae66 100644 --- a/gitlab/tests/objects/test_audit_events.py +++ b/gitlab/tests/objects/test_audit_events.py @@ -8,7 +8,7 @@ import pytest import responses -from gitlab.v4.objects.audit_events import ProjectAudit +from gitlab.v4.objects.audit_events import AuditEvent, ProjectAudit id = 5 @@ -32,11 +32,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 +54,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,6 +66,19 @@ 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_project_audit_events(project, resp_list_audit_events): audit_events = project.audit_events.list() assert isinstance(audit_events, list) @@ -73,7 +86,7 @@ def test_list_project_audit_events(project, resp_list_audit_events): 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 audit_event.id == id From 2a0fbdf9fe98da6c436230be47b0ddb198c7eca9 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 7 Mar 2021 12:50:26 +0100 Subject: [PATCH 5/5] feat(objects): add support for group audit events API --- gitlab/tests/objects/test_audit_events.py | 23 ++++++++++-- gitlab/v4/objects/audit_events.py | 46 +++++++++++++++++++++-- gitlab/v4/objects/groups.py | 2 + gitlab/v4/objects/projects.py | 4 +- 4 files changed, 67 insertions(+), 8 deletions(-) diff --git a/gitlab/tests/objects/test_audit_events.py b/gitlab/tests/objects/test_audit_events.py index 8da77ae66..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 AuditEvent, ProjectAudit +from gitlab.v4.objects.audit_events import ( + AuditEvent, + GroupAuditEvent, + ProjectAuditEvent, +) id = 5 @@ -79,14 +83,27 @@ def test_get_instance_audit_events(gl, resp_get_audit_event): 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_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/audit_events.py b/gitlab/v4/objects/audit_events.py index a4437be29..c99856a9e 100644 --- a/gitlab/v4/objects/audit_events.py +++ b/gitlab/v4/objects/audit_events.py @@ -2,6 +2,7 @@ GitLab API: https://docs.gitlab.com/ee/api/audit_events.html """ +import warnings from gitlab.base import RESTManager, RESTObject from gitlab.mixins import RetrieveMixin @@ -9,6 +10,10 @@ __all__ = [ "AuditEvent", "AuditEventManager", + "GroupAuditEvent", + "GroupAuditEventManager", + "ProjectAuditEvent", + "ProjectAuditEventManager", "ProjectAudit", "ProjectAuditManager", ] @@ -24,12 +29,47 @@ class AuditEventManager(RetrieveMixin, RESTManager): _list_filters = ("created_after", "created_before", "entity_type", "entity_id") -class ProjectAudit(RESTObject): +class GroupAuditEvent(RESTObject): _id_attr = "id" -class ProjectAuditManager(RetrieveMixin, RESTManager): +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/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"), 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