Skip to content

Commit

Permalink
feat(objects): add support for group audit events API
Browse files Browse the repository at this point in the history
  • Loading branch information
nejch committed Mar 7, 2021
1 parent 84e3247 commit 2a0fbdf
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 8 deletions.
23 changes: 20 additions & 3 deletions gitlab/tests/objects/test_audit_events.py
Expand Up @@ -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

Expand Down Expand Up @@ -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
46 changes: 43 additions & 3 deletions gitlab/v4/objects/audit_events.py
Expand Up @@ -2,13 +2,18 @@
GitLab API:
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",
]
Expand All @@ -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
2 changes: 2 additions & 0 deletions gitlab/v4/objects/groups.py
Expand Up @@ -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
Expand Down Expand Up @@ -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"),
Expand Down
4 changes: 2 additions & 2 deletions gitlab/v4/objects/projects.py
Expand Up @@ -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
Expand Down Expand Up @@ -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"),
Expand Down

0 comments on commit 2a0fbdf

Please sign in to comment.