Skip to content

Commit

Permalink
Merge pull request #1363 from python-gitlab/feat/all-audit-events
Browse files Browse the repository at this point in the history
Feat: cover all audit events
  • Loading branch information
max-wittig committed Mar 24, 2021
2 parents e798c9b + 2a0fbdf commit 02ce49e
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 25 deletions.
44 changes: 37 additions & 7 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 ProjectAudit
from gitlab.v4.objects.audit_events import (
AuditEvent,
GroupAuditEvent,
ProjectAuditEvent,
)

id = 5

Expand All @@ -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}"
)


Expand All @@ -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,
Expand All @@ -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
1 change: 1 addition & 0 deletions gitlab/v4/objects/__init__.py
Expand Up @@ -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 *
Expand Down
60 changes: 56 additions & 4 deletions 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
12 changes: 0 additions & 12 deletions gitlab/v4/objects/events.py
Expand Up @@ -6,8 +6,6 @@
__all__ = [
"Event",
"EventManager",
"AuditEvent",
"AuditEventManager",
"GroupEpicResourceLabelEvent",
"GroupEpicResourceLabelEventManager",
"ProjectEvent",
Expand Down Expand Up @@ -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

Expand Down
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 02ce49e

Please sign in to comment.