1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
import unittest
from httmock import response, urlmatch, with_httmock
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)
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")
|