summaryrefslogtreecommitdiff
path: root/gitlab/tests/objects/test_groups.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/tests/objects/test_groups.py')
-rw-r--r--gitlab/tests/objects/test_groups.py170
1 files changed, 83 insertions, 87 deletions
diff --git a/gitlab/tests/objects/test_groups.py b/gitlab/tests/objects/test_groups.py
index 075d915..d4786f4 100644
--- a/gitlab/tests/objects/test_groups.py
+++ b/gitlab/tests/objects/test_groups.py
@@ -1,101 +1,97 @@
-import unittest
+"""
+GitLab API: https://docs.gitlab.com/ce/api/groups.html
+"""
-from httmock import response, urlmatch, with_httmock
+import pytest
+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)
+@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
-@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)
+def test_get_group(gl, resp_groups):
+ data = gl.groups.get(1)
+ assert isinstance(data, gitlab.v4.objects.Group)
+ assert data.name == "name"
+ assert data.path == "path"
+ assert data.id == 1
-@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.
- """
+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)
+ assert data.name == name
+ assert data.path == path
- content = """{
- "message": "202 Accepted"
- }"""
- content = content.encode("utf-8")
- return response(202, content, headers, None, 25, request)
+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")
+def test_refresh_group_export_status(group, resp_export):
+ export = group.exports.create()
+ export.refresh()
+ assert export.export_status == "finished"
+
+
+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
+
+
+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"
-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)
- self.assertIsInstance(data, gitlab.v4.objects.Group)
- self.assertEqual(data.name, "name")
- self.assertEqual(data.path, "path")
- self.assertEqual(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)
-
-
-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()
- self.assertEqual(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")
-
- @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)
-
-
-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")
-
- @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")
+@pytest.mark.skip("GitLab API endpoint not implemented")
+def test_refresh_group_import_status(group, resp_groups):
+ group_import = group.imports.get()
+ group_import.refresh()
+ assert group_import.import_status == "finished"