diff options
Diffstat (limited to 'gitlab/tests/objects/test_groups.py')
-rw-r--r-- | gitlab/tests/objects/test_groups.py | 97 |
1 files changed, 50 insertions, 47 deletions
diff --git a/gitlab/tests/objects/test_groups.py b/gitlab/tests/objects/test_groups.py index b5464b5..d4786f4 100644 --- a/gitlab/tests/objects/test_groups.py +++ b/gitlab/tests/objects/test_groups.py @@ -3,45 +3,54 @@ GitLab API: https://docs.gitlab.com/ce/api/groups.html """ import pytest - -from httmock import response, urlmatch, with_httmock +import responses import gitlab -from .mocks import * # noqa - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups/1", method="get") -def resp_get_group(url, request): - content = '{"name": "name", "id": 1, "path": "path"}' - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch(scheme="http", netloc="localhost", path="/api/v4/groups", method="post") -def resp_create_group(url, request): - content = '{"name": "name", "id": 1, "path": "path"}' - content = content.encode("utf-8") - return response(200, content, headers, None, 5, request) - - -@urlmatch( - scheme="http", netloc="localhost", path="/api/v4/groups/import", method="post", -) -def resp_create_import(url, request): - """Mock for Group import tests. - - GitLab does not respond with import status for group imports. - """ - - content = """{ - "message": "202 Accepted" - }""" - content = content.encode("utf-8") - return response(202, content, headers, None, 25, request) -@with_httmock(resp_get_group) -def test_get_group(gl): +@pytest.fixture +def resp_groups(): + content = {"name": "name", "id": 1, "path": "path"} + + with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps: + rsps.add( + method=responses.GET, + url="http://localhost/api/v4/groups/1", + json=content, + content_type="application/json", + status=200, + ) + rsps.add( + method=responses.GET, + url="http://localhost/api/v4/groups", + json=[content], + content_type="application/json", + status=200, + ) + rsps.add( + method=responses.POST, + url="http://localhost/api/v4/groups", + json=content, + content_type="application/json", + status=200, + ) + yield rsps + + +@pytest.fixture +def resp_create_import(accepted_content): + with responses.RequestsMock() as rsps: + rsps.add( + method=responses.POST, + url="http://localhost/api/v4/groups/import", + json=accepted_content, + content_type="application/json", + status=202, + ) + yield rsps + + +def test_get_group(gl, resp_groups): data = gl.groups.get(1) assert isinstance(data, gitlab.v4.objects.Group) assert data.name == "name" @@ -49,8 +58,7 @@ def test_get_group(gl): assert data.id == 1 -@with_httmock(resp_create_group) -def test_create_group(gl): +def test_create_group(gl, resp_groups): name, path = "name", "path" data = gl.groups.create({"name": name, "path": path}) assert isinstance(data, gitlab.v4.objects.Group) @@ -58,37 +66,32 @@ def test_create_group(gl): assert data.path == path -@with_httmock(resp_create_export) -def test_create_group_export(group): +def test_create_group_export(group, resp_export): export = group.exports.create() assert export.message == "202 Accepted" @pytest.mark.skip("GitLab API endpoint not implemented") -@with_httmock(resp_create_export) -def test_refresh_group_export_status(group): +def test_refresh_group_export_status(group, resp_export): export = group.exports.create() export.refresh() assert export.export_status == "finished" -@with_httmock(resp_create_export, resp_download_export) -def test_download_group_export(group): +def test_download_group_export(group, resp_export, binary_content): export = group.exports.create() download = export.download() assert isinstance(download, bytes) assert download == binary_content -@with_httmock(resp_create_import) -def test_import_group(gl): +def test_import_group(gl, resp_create_import): group_import = gl.groups.import_group("file", "api-group", "API Group") assert group_import["message"] == "202 Accepted" @pytest.mark.skip("GitLab API endpoint not implemented") -@with_httmock(resp_create_import) -def test_refresh_group_import_status(group): +def test_refresh_group_import_status(group, resp_groups): group_import = group.imports.get() group_import.refresh() assert group_import.import_status == "finished" |