From 11383e70f74c70e6fe8a56f18b5b170db982f402 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Thu, 9 Apr 2020 00:13:36 +0200 Subject: chore: run unittest2pytest on all unit tests --- gitlab/tests/objects/test_groups.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'gitlab/tests/objects/test_groups.py') diff --git a/gitlab/tests/objects/test_groups.py b/gitlab/tests/objects/test_groups.py index 075d915..12ebdb2 100644 --- a/gitlab/tests/objects/test_groups.py +++ b/gitlab/tests/objects/test_groups.py @@ -48,18 +48,18 @@ class TestGroup(unittest.TestCase): @with_httmock(resp_get_group) def test_get_group(self): data = self.gl.groups.get(1) - self.assertIsInstance(data, gitlab.v4.objects.Group) - self.assertEqual(data.name, "name") - self.assertEqual(data.path, "path") - self.assertEqual(data.id, 1) + assert isinstance(data, gitlab.v4.objects.Group) + assert data.name == "name" + assert data.path == "path" + assert data.id == 1 @with_httmock(resp_create_group) def test_create_group(self): name, path = "name", "path" data = self.gl.groups.create({"name": name, "path": path}) - self.assertIsInstance(data, gitlab.v4.objects.Group) - self.assertEqual(data.name, name) - self.assertEqual(data.path, path) + assert isinstance(data, gitlab.v4.objects.Group) + assert data.name == name + assert data.path == path class TestGroupExport(TestGroup): @@ -70,32 +70,32 @@ class TestGroupExport(TestGroup): @with_httmock(resp_create_export) def test_create_group_export(self): export = self.group.exports.create() - self.assertEqual(export.message, "202 Accepted") + assert export.message == "202 Accepted" @unittest.skip("GitLab API endpoint not implemented") @with_httmock(resp_create_export) def test_refresh_group_export_status(self): export = self.group.exports.create() export.refresh() - self.assertEqual(export.export_status, "finished") + assert export.export_status == "finished" @with_httmock(resp_create_export, resp_download_export) def test_download_group_export(self): export = self.group.exports.create() download = export.download() - self.assertIsInstance(download, bytes) - self.assertEqual(download, binary_content) + assert isinstance(download, bytes) + assert download == binary_content class TestGroupImport(TestGroup): @with_httmock(resp_create_import) def test_import_group(self): group_import = self.gl.groups.import_group("file", "api-group", "API Group") - self.assertEqual(group_import["message"], "202 Accepted") + assert group_import["message"] == "202 Accepted" @unittest.skip("GitLab API endpoint not implemented") @with_httmock(resp_create_import) def test_refresh_group_import_status(self): group_import = self.group.imports.get() group_import.refresh() - self.assertEqual(group_import.import_status, "finished") + assert group_import.import_status == "finished" -- cgit v1.2.1 From 76b2cadf1418e4ea2ac420ebba5a4b4f16fbd4c7 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Fri, 17 Apr 2020 02:26:28 +0200 Subject: refactor: split unit tests by GitLab API resources --- gitlab/tests/objects/test_groups.py | 121 +++++++++++++++++------------------- 1 file changed, 57 insertions(+), 64 deletions(-) (limited to 'gitlab/tests/objects/test_groups.py') diff --git a/gitlab/tests/objects/test_groups.py b/gitlab/tests/objects/test_groups.py index 12ebdb2..b5464b5 100644 --- a/gitlab/tests/objects/test_groups.py +++ b/gitlab/tests/objects/test_groups.py @@ -1,4 +1,8 @@ -import unittest +""" +GitLab API: https://docs.gitlab.com/ce/api/groups.html +""" + +import pytest from httmock import response, urlmatch, with_httmock @@ -36,66 +40,55 @@ def resp_create_import(url, request): return response(202, content, headers, None, 25, request) -class TestGroup(unittest.TestCase): - def setUp(self): - self.gl = gitlab.Gitlab( - "http://localhost", - private_token="private_token", - ssl_verify=True, - api_version=4, - ) - - @with_httmock(resp_get_group) - def test_get_group(self): - data = self.gl.groups.get(1) - assert isinstance(data, gitlab.v4.objects.Group) - assert data.name == "name" - assert data.path == "path" - assert data.id == 1 - - @with_httmock(resp_create_group) - def test_create_group(self): - name, path = "name", "path" - data = self.gl.groups.create({"name": name, "path": path}) - assert isinstance(data, gitlab.v4.objects.Group) - assert data.name == name - assert data.path == path - - -class TestGroupExport(TestGroup): - def setUp(self): - super(TestGroupExport, self).setUp() - self.group = self.gl.groups.get(1, lazy=True) - - @with_httmock(resp_create_export) - def test_create_group_export(self): - export = self.group.exports.create() - assert export.message == "202 Accepted" - - @unittest.skip("GitLab API endpoint not implemented") - @with_httmock(resp_create_export) - def test_refresh_group_export_status(self): - export = self.group.exports.create() - export.refresh() - assert export.export_status == "finished" - - @with_httmock(resp_create_export, resp_download_export) - def test_download_group_export(self): - export = self.group.exports.create() - download = export.download() - assert isinstance(download, bytes) - assert download == binary_content - - -class TestGroupImport(TestGroup): - @with_httmock(resp_create_import) - def test_import_group(self): - group_import = self.gl.groups.import_group("file", "api-group", "API Group") - assert group_import["message"] == "202 Accepted" - - @unittest.skip("GitLab API endpoint not implemented") - @with_httmock(resp_create_import) - def test_refresh_group_import_status(self): - group_import = self.group.imports.get() - group_import.refresh() - assert group_import.import_status == "finished" +@with_httmock(resp_get_group) +def test_get_group(gl): + data = gl.groups.get(1) + assert isinstance(data, gitlab.v4.objects.Group) + assert data.name == "name" + assert data.path == "path" + assert data.id == 1 + + +@with_httmock(resp_create_group) +def test_create_group(gl): + name, path = "name", "path" + data = gl.groups.create({"name": name, "path": path}) + assert isinstance(data, gitlab.v4.objects.Group) + assert data.name == name + assert data.path == path + + +@with_httmock(resp_create_export) +def test_create_group_export(group): + 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): + 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): + 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): + 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): + group_import = group.imports.get() + group_import.refresh() + assert group_import.import_status == "finished" -- cgit v1.2.1 From 204782a117f77f367dee87aa2c70822587829147 Mon Sep 17 00:00:00 2001 From: Nejc Habjan Date: Sun, 23 Aug 2020 21:16:20 +0200 Subject: refactor: rewrite unit tests for objects with responses --- gitlab/tests/objects/test_groups.py | 97 +++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 47 deletions(-) (limited to 'gitlab/tests/objects/test_groups.py') 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" -- cgit v1.2.1