Skip to content

Commit 7ea178b

Browse files
committed
test(packages): add tests for Packages API
1 parent 71495d1 commit 7ea178b

File tree

7 files changed

+151
-1
lines changed

7 files changed

+151
-1
lines changed

gitlab/tests/objects/conftest.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ def created_content():
2121
return {"message": "201 Created"}
2222

2323

24+
@pytest.fixture
25+
def no_content():
26+
return {"message": "204 No Content"}
27+
28+
2429
@pytest.fixture
2530
def resp_export(accepted_content, binary_content):
2631
"""Common fixture for group and project exports."""

gitlab/tests/objects/test_packages.py

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
"""
2+
GitLab API: https://docs.gitlab.com/ce/api/packages.html
3+
"""
4+
import re
5+
6+
import pytest
7+
import responses
8+
9+
from gitlab.v4.objects import GroupPackage, ProjectPackage
10+
11+
12+
package_content = {
13+
"id": 1,
14+
"name": "com/mycompany/my-app",
15+
"version": "1.0-SNAPSHOT",
16+
"package_type": "maven",
17+
"_links": {
18+
"web_path": "/namespace1/project1/-/packages/1",
19+
"delete_api_path": "/namespace1/project1/-/packages/1",
20+
},
21+
"created_at": "2019-11-27T03:37:38.711Z",
22+
"pipeline": {
23+
"id": 123,
24+
"status": "pending",
25+
"ref": "new-pipeline",
26+
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
27+
"web_url": "https://example.com/foo/bar/pipelines/47",
28+
"created_at": "2016-08-11T11:28:34.085Z",
29+
"updated_at": "2016-08-11T11:32:35.169Z",
30+
"user": {
31+
"name": "Administrator",
32+
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
33+
},
34+
},
35+
"versions": [
36+
{
37+
"id": 2,
38+
"version": "2.0-SNAPSHOT",
39+
"created_at": "2020-04-28T04:42:11.573Z",
40+
"pipeline": {
41+
"id": 234,
42+
"status": "pending",
43+
"ref": "new-pipeline",
44+
"sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a",
45+
"web_url": "https://example.com/foo/bar/pipelines/58",
46+
"created_at": "2016-08-11T11:28:34.085Z",
47+
"updated_at": "2016-08-11T11:32:35.169Z",
48+
"user": {
49+
"name": "Administrator",
50+
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
51+
},
52+
},
53+
}
54+
],
55+
}
56+
57+
58+
@pytest.fixture
59+
def resp_list_packages():
60+
with responses.RequestsMock() as rsps:
61+
rsps.add(
62+
method=responses.GET,
63+
url=re.compile(r"http://localhost/api/v4/(groups|projects)/1/packages"),
64+
json=[package_content],
65+
content_type="application/json",
66+
status=200,
67+
)
68+
yield rsps
69+
70+
71+
@pytest.fixture
72+
def resp_get_package():
73+
with responses.RequestsMock() as rsps:
74+
rsps.add(
75+
method=responses.GET,
76+
url="http://localhost/api/v4/projects/1/packages/1",
77+
json=package_content,
78+
content_type="application/json",
79+
status=200,
80+
)
81+
yield rsps
82+
83+
84+
@pytest.fixture
85+
def resp_delete_package(no_content):
86+
with responses.RequestsMock() as rsps:
87+
rsps.add(
88+
method=responses.DELETE,
89+
url="http://localhost/api/v4/projects/1/packages/1",
90+
json=no_content,
91+
content_type="application/json",
92+
status=204,
93+
)
94+
yield rsps
95+
96+
97+
def test_list_project_packages(project, resp_list_packages):
98+
packages = project.packages.list()
99+
assert isinstance(packages, list)
100+
assert isinstance(packages[0], ProjectPackage)
101+
assert packages[0].version == "1.0-SNAPSHOT"
102+
103+
104+
def test_list_group_packages(group, resp_list_packages):
105+
packages = group.packages.list()
106+
assert isinstance(packages, list)
107+
assert isinstance(packages[0], GroupPackage)
108+
assert packages[0].version == "1.0-SNAPSHOT"
109+
110+
111+
def test_get_project_package(project, resp_get_package):
112+
package = project.packages.get(1)
113+
assert isinstance(package, ProjectPackage)
114+
assert package.version == "1.0-SNAPSHOT"
115+
116+
117+
def test_delete_project_package(project, resp_delete_package):
118+
package = project.packages.get(1, lazy=True)
119+
package.delete()

tools/functional/api/test_packages.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"""
2+
GitLab API: https://docs.gitlab.com/ce/api/packages.html
3+
"""
4+
5+
6+
def test_list_project_packages(project):
7+
packages = project.packages.list()
8+
assert isinstance(packages, list)
9+
10+
11+
def test_list_group_packages(group):
12+
packages = group.packages.list()
13+
assert isinstance(packages, list)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def test_list_project_packages(gitlab_cli, project):
2+
cmd = ["project-package", "list", "--project-id", project.id]
3+
ret = gitlab_cli(cmd)
4+
5+
assert ret.success
6+
7+
8+
def test_list_group_packages(gitlab_cli, group):
9+
cmd = ["group-package", "list", "--group-id", group.id]
10+
ret = gitlab_cli(cmd)
11+
12+
assert ret.success
File renamed without changes.

tools/functional_tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ setenv_script=$(dirname "$0")/build_test_env.sh || exit 1
1818
BUILD_TEST_ENV_AUTO_CLEANUP=true
1919
. "$setenv_script" "$@" || exit 1
2020

21-
pytest "$(dirname "$0")/functional/test_cli_v4.py"
21+
pytest "$(dirname "$0")/functional/cli"

tools/py_functional_tests.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ BUILD_TEST_ENV_AUTO_CLEANUP=true
1919
. "$setenv_script" "$@" || exit 1
2020

2121
try python "$(dirname "$0")"/python_test_v${API_VER}.py
22+
pytest "$(dirname "$0")/functional/api"

0 commit comments

Comments
 (0)