Skip to content

Commit 9dd62c3

Browse files
sispnejch
authored andcommitted
feat(registry-protection): add support for registry protection rule deletion
1 parent d6eac7b commit 9dd62c3

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

gitlab/v4/objects/registry_protection_repository_rules.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
from gitlab.base import RESTObject
2-
from gitlab.mixins import CreateMixin, ListMixin, SaveMixin, UpdateMethod, UpdateMixin
2+
from gitlab.mixins import (
3+
CreateMixin,
4+
DeleteMixin,
5+
ListMixin,
6+
SaveMixin,
7+
UpdateMethod,
8+
UpdateMixin,
9+
)
310
from gitlab.types import RequiredOptional
411

512
__all__ = [
@@ -16,6 +23,7 @@ class ProjectRegistryRepositoryProtectionRuleManager(
1623
ListMixin[ProjectRegistryRepositoryProtectionRule],
1724
CreateMixin[ProjectRegistryRepositoryProtectionRule],
1825
UpdateMixin[ProjectRegistryRepositoryProtectionRule],
26+
DeleteMixin[ProjectRegistryRepositoryProtectionRule],
1927
):
2028
_path = "/projects/{project_id}/registry/protection/repository/rules"
2129
_obj_cls = ProjectRegistryRepositoryProtectionRule

tests/functional/api/test_registry.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,8 @@ def test_project_protected_registry(project: Project):
2626
protected_registry.minimum_access_level_for_push = "owner"
2727
protected_registry.save()
2828
assert protected_registry.minimum_access_level_for_push == "owner"
29+
30+
protected_registry.delete()
31+
32+
rules = project.registry_protection_repository_rules.list()
33+
assert rules == []

tests/unit/objects/test_registry_protection_rules.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,17 @@ def resp_update_protected_registry():
5858
yield rsps
5959

6060

61+
@pytest.fixture
62+
def resp_delete_protected_registry():
63+
with responses.RequestsMock() as rsps:
64+
rsps.add(
65+
method=responses.DELETE,
66+
url="http://localhost/api/v4/projects/1/registry/protection/repository/rules/1",
67+
status=204,
68+
)
69+
yield rsps
70+
71+
6172
def test_list_project_protected_registries(project, resp_list_protected_registries):
6273
protected_registry = project.registry_protection_repository_rules.list()[0]
6374
assert isinstance(protected_registry, ProjectRegistryRepositoryProtectionRule)
@@ -80,3 +91,7 @@ def test_update_project_protected_registry(project, resp_update_protected_regist
8091
1, {"repository_path_pattern": "abc*"}
8192
)
8293
assert updated["repository_path_pattern"] == "abc*"
94+
95+
96+
def test_delete_project_protected_registry(project, resp_delete_protected_registry):
97+
project.registry_protection_repository_rules.delete(1)

0 commit comments

Comments
 (0)