|
38 | 38 | "created_at": "2020-01-15T12:36:29.590Z", |
39 | 39 | }, |
40 | 40 | ] |
| 41 | +push_rules_content = { |
| 42 | + "id": 2, |
| 43 | + "created_at": "2020-08-17T19:09:19.580Z", |
| 44 | + "commit_message_regex": "[a-zA-Z]", |
| 45 | + "commit_message_negative_regex": "[x+]", |
| 46 | + "branch_name_regex": "[a-z]", |
| 47 | + "deny_delete_tag": True, |
| 48 | + "member_check": True, |
| 49 | + "prevent_secrets": True, |
| 50 | + "author_email_regex": "^[A-Za-z0-9.]+@gitlab.com$", |
| 51 | + "file_name_regex": "(exe)$", |
| 52 | + "max_file_size": 100, |
| 53 | +} |
41 | 54 |
|
42 | 55 |
|
43 | 56 | @pytest.fixture |
@@ -111,6 +124,72 @@ def resp_transfer_group(): |
111 | 124 | yield rsps |
112 | 125 |
|
113 | 126 |
|
| 127 | +@pytest.fixture |
| 128 | +def resp_list_push_rules_group(): |
| 129 | + with responses.RequestsMock() as rsps: |
| 130 | + rsps.add( |
| 131 | + method=responses.GET, |
| 132 | + url="http://localhost/api/v4/groups/1/push_rule", |
| 133 | + json=push_rules_content, |
| 134 | + content_type="application/json", |
| 135 | + status=200, |
| 136 | + ) |
| 137 | + yield rsps |
| 138 | + |
| 139 | + |
| 140 | +@pytest.fixture |
| 141 | +def resp_create_push_rules_group(): |
| 142 | + with responses.RequestsMock() as rsps: |
| 143 | + rsps.add( |
| 144 | + method=responses.POST, |
| 145 | + url="http://localhost/api/v4/groups/1/push_rule", |
| 146 | + json=push_rules_content, |
| 147 | + content_type="application/json", |
| 148 | + status=201, |
| 149 | + ) |
| 150 | + yield rsps |
| 151 | + |
| 152 | + |
| 153 | +@pytest.fixture |
| 154 | +def resp_update_push_rules_group(): |
| 155 | + with responses.RequestsMock() as rsps: |
| 156 | + rsps.add( |
| 157 | + method=responses.GET, |
| 158 | + url="http://localhost/api/v4/groups/1/push_rule", |
| 159 | + json=push_rules_content, |
| 160 | + content_type="application/json", |
| 161 | + status=200, |
| 162 | + ) |
| 163 | + rsps.add( |
| 164 | + method=responses.PUT, |
| 165 | + url="http://localhost/api/v4/groups/1/push_rule", |
| 166 | + json=push_rules_content, |
| 167 | + content_type="application/json", |
| 168 | + status=201, |
| 169 | + ) |
| 170 | + yield rsps |
| 171 | + |
| 172 | + |
| 173 | +@pytest.fixture |
| 174 | +def resp_delete_push_rules_group(no_content): |
| 175 | + with responses.RequestsMock() as rsps: |
| 176 | + rsps.add( |
| 177 | + method=responses.GET, |
| 178 | + url="http://localhost/api/v4/groups/1/push_rule", |
| 179 | + json=push_rules_content, |
| 180 | + content_type="application/json", |
| 181 | + status=200, |
| 182 | + ) |
| 183 | + rsps.add( |
| 184 | + method=responses.DELETE, |
| 185 | + url="http://localhost/api/v4/groups/1/push_rule", |
| 186 | + json=no_content, |
| 187 | + content_type="application/json", |
| 188 | + status=204, |
| 189 | + ) |
| 190 | + yield rsps |
| 191 | + |
| 192 | + |
114 | 193 | def test_get_group(gl, resp_groups): |
115 | 194 | data = gl.groups.get(1) |
116 | 195 | assert isinstance(data, gitlab.v4.objects.Group) |
@@ -173,3 +252,27 @@ def test_refresh_group_import_status(group, resp_groups): |
173 | 252 | def test_transfer_group(gl, resp_transfer_group): |
174 | 253 | group = gl.groups.get(1, lazy=True) |
175 | 254 | group.transfer("test-namespace") |
| 255 | + |
| 256 | + |
| 257 | +def test_list_group_push_rules(group, resp_list_push_rules_group): |
| 258 | + pr = group.pushrules.get() |
| 259 | + assert pr |
| 260 | + assert pr.deny_delete_tag |
| 261 | + |
| 262 | + |
| 263 | +def test_create_group_push_rule(group, resp_create_push_rules_group): |
| 264 | + group.pushrules.create({"deny_delete_tag": True}) |
| 265 | + |
| 266 | + |
| 267 | +def test_update_group_push_rule( |
| 268 | + group, |
| 269 | + resp_update_push_rules_group, |
| 270 | +): |
| 271 | + pr = group.pushrules.get() |
| 272 | + pr.deny_delete_tag = False |
| 273 | + pr.save() |
| 274 | + |
| 275 | + |
| 276 | +def test_delete_group_push_rule(group, resp_delete_push_rules_group): |
| 277 | + pr = group.pushrules.get() |
| 278 | + pr.delete() |
0 commit comments