pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python-gitlab/python-gitlab/commit/61e43eb186925feede073c7065e5ae868ffbb4ec

link crossorigen="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-10539fe0effdbc74.css" /> refactor(tests): split functional tests · python-gitlab/python-gitlab@61e43eb · GitHub
Skip to content

Commit 61e43eb

Browse files
committed
refactor(tests): split functional tests
1 parent 2002098 commit 61e43eb

15 files changed

Lines changed: 1498 additions & 1164 deletions
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
def test_project_clusters(project):
2+
project.clusters.create(
3+
{
4+
"name": "cluster1",
5+
"platform_kubernetes_attributes": {
6+
"api_url": "http://url",
7+
"token": "tokenval",
8+
},
9+
}
10+
)
11+
clusters = project.clusters.list()
12+
assert len(clusters) == 1
13+
14+
cluster = clusters[0]
15+
cluster.platform_kubernetes_attributes = {"api_url": "http://newurl"}
16+
cluster.save()
17+
18+
cluster = project.clusters.list()[0]
19+
assert cluster.platform_kubernetes["api_url"] == "http://newurl"
20+
21+
cluster.delete()
22+
assert len(project.clusters.list()) == 0
23+
24+
25+
def test_group_clusters(group):
26+
group.clusters.create(
27+
{
28+
"name": "cluster1",
29+
"platform_kubernetes_attributes": {
30+
"api_url": "http://url",
31+
"token": "tokenval",
32+
},
33+
}
34+
)
35+
clusters = group.clusters.list()
36+
assert len(clusters) == 1
37+
38+
cluster = clusters[0]
39+
cluster.platform_kubernetes_attributes = {"api_url": "http://newurl"}
40+
cluster.save()
41+
42+
cluster = group.clusters.list()[0]
43+
assert cluster.platform_kubernetes["api_url"] == "http://newurl"
44+
45+
cluster.delete()
46+
assert len(group.clusters.list()) == 0
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
def test_current_user_email(gl):
2+
gl.auth()
3+
mail = gl.user.emails.create({"email": "current@user.com"})
4+
assert len(gl.user.emails.list()) == 1
5+
6+
mail.delete()
7+
assert len(gl.user.emails.list()) == 0
8+
9+
10+
def test_current_user_gpg_keys(gl, GPG_KEY):
11+
gl.auth()
12+
gkey = gl.user.gpgkeys.create({"key": GPG_KEY})
13+
assert len(gl.user.gpgkeys.list()) == 1
14+
15+
# Seems broken on the gitlab side
16+
gkey = gl.user.gpgkeys.get(gkey.id)
17+
gkey.delete()
18+
assert len(gl.user.gpgkeys.list()) == 0
19+
20+
21+
def test_current_user_ssh_keys(gl, SSH_KEY):
22+
gl.auth()
23+
key = gl.user.keys.create({"title": "testkey", "key": SSH_KEY})
24+
assert len(gl.user.keys.list()) == 1
25+
26+
key.delete()
27+
assert len(gl.user.keys.list()) == 0
28+
29+
30+
def test_current_user_status(gl):
31+
gl.auth()
32+
message = "Test"
33+
emoji = "thumbsup"
34+
status = gl.user.status.get()
35+
36+
status.message = message
37+
status.emoji = emoji
38+
status.save()
39+
40+
new_status = gl.user.status.get()
41+
assert new_status.message == message
42+
assert new_status.emoji == emoji
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def test_project_deploy_keys(gl, project, DEPLOY_KEY):
2+
deploy_key = project.keys.create({"title": "foo@bar", "key": DEPLOY_KEY})
3+
project_keys = list(project.keys.list())
4+
assert len(project_keys) == 1
5+
6+
project2 = gl.projects.create({"name": "deploy-key-project"})
7+
project2.keys.enable(deploy_key.id)
8+
assert len(project2.keys.list()) == 1
9+
10+
project2.keys.delete(deploy_key.id)
11+
assert len(project2.keys.list()) == 0
12+
project2.delete()
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
def test_project_deploy_tokens(gl, project):
2+
deploy_token = project.deploytokens.create(
3+
{
4+
"name": "foo",
5+
"username": "bar",
6+
"expires_at": "2022-01-01",
7+
"scopes": ["read_registry"],
8+
}
9+
)
10+
assert len(project.deploytokens.list()) == 1
11+
assert gl.deploytokens.list() == project.deploytokens.list()
12+
13+
assert project.deploytokens.list()[0].name == "foo"
14+
assert project.deploytokens.list()[0].expires_at == "2022-01-01T00:00:00.000Z"
15+
assert project.deploytokens.list()[0].scopes == ["read_registry"]
16+
assert project.deploytokens.list()[0].username == "bar"
17+
18+
deploy_token.delete()
19+
assert len(project.deploytokens.list()) == 0
20+
assert len(gl.deploytokens.list()) == 0
21+
22+
23+
def test_group_deploy_tokens(gl, group):
24+
deploy_token = group.deploytokens.create(
25+
{
26+
"name": "foo",
27+
"scopes": ["read_registry"],
28+
}
29+
)
30+
31+
assert len(group.deploytokens.list()) == 1
32+
assert gl.deploytokens.list() == group.deploytokens.list()
33+
34+
deploy_token.delete()
35+
assert len(group.deploytokens.list()) == 0
36+
assert len(gl.deploytokens.list()) == 0
Lines changed: 181 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,183 @@
1-
"""
2-
Temporary module to run legacy tests as a single pytest test case
3-
as they're all plain asserts at module level.
4-
"""
1+
import pytest
52

3+
import gitlab
64

7-
def test_api_v4(gl):
8-
from tools.functional import python_test_v4
5+
6+
def test_auth_from_config(gl, temp_dir):
7+
"""Test token authentication from config file"""
8+
test_gitlab = gitlab.Gitlab.from_config(
9+
config_files=[temp_dir / "python-gitlab.cfg"]
10+
)
11+
test_gitlab.auth()
12+
assert isinstance(test_gitlab.user, gitlab.v4.objects.CurrentUser)
13+
14+
15+
def test_broadcast_messages(gl):
16+
msg = gl.broadcastmessages.create({"message": "this is the message"})
17+
msg.color = "#444444"
18+
msg.save()
19+
msg_id = msg.id
20+
21+
msg = gl.broadcastmessages.list(all=True)[0]
22+
assert msg.color == "#444444"
23+
24+
msg = gl.broadcastmessages.get(msg_id)
25+
assert msg.color == "#444444"
26+
27+
msg.delete()
28+
assert len(gl.broadcastmessages.list()) == 0
29+
30+
31+
def test_markdown(gl):
32+
html = gl.markdown("foo")
33+
assert "foo" in html
34+
35+
36+
def test_lint(gl):
37+
success, errors = gl.lint("Invalid")
38+
assert success is False
39+
assert errors
40+
41+
42+
def test_sidekiq_queue_metrics(gl):
43+
out = gl.sidekiq.queue_metrics()
44+
assert isinstance(out, dict)
45+
assert "pages" in out["queues"]
46+
47+
48+
def test_sidekiq_process_metrics(gl):
49+
out = gl.sidekiq.process_metrics()
50+
assert isinstance(out, dict)
51+
assert "hostname" in out["processes"][0]
52+
53+
54+
def test_sidekiq_job_stats(gl):
55+
out = gl.sidekiq.job_stats()
56+
assert isinstance(out, dict)
57+
assert "processed" in out["jobs"]
58+
59+
60+
def test_sidekiq_compound_metrics(gl):
61+
out = gl.sidekiq.compound_metrics()
62+
assert isinstance(out, dict)
63+
assert "jobs" in out
64+
assert "processes" in out
65+
assert "queues" in out
66+
67+
68+
def test_gitlab_settings(gl):
69+
settings = gl.settings.get()
70+
settings.default_projects_limit = 42
71+
settings.save()
72+
settings = gl.settings.get()
73+
assert settings.default_projects_limit == 42
74+
75+
76+
def test_template_dockerfile(gl):
77+
assert gl.dockerfiles.list()
78+
79+
dockerfile = gl.dockerfiles.get("Node")
80+
assert dockerfile.content is not None
81+
82+
83+
def test_template_gitignore(gl):
84+
assert gl.gitignores.list()
85+
gitignore = gl.gitignores.get("Node")
86+
assert gitignore.content is not None
87+
88+
89+
def test_template_gitlabciyml(gl):
90+
assert gl.gitlabciymls.list()
91+
gitlabciyml = gl.gitlabciymls.get("Nodejs")
92+
assert gitlabciyml.content is not None
93+
94+
95+
def test_template_license(gl):
96+
assert gl.licenses.list()
97+
license = gl.licenses.get(
98+
"bsd-2-clause", project="mytestproject", fullname="mytestfullname"
99+
)
100+
assert "mytestfullname" in license.content
101+
102+
103+
def test_hooks(gl):
104+
hook = gl.hooks.create({"url": "http://whatever.com"})
105+
assert len(gl.hooks.list()) == 1
106+
107+
hook.delete()
108+
assert len(gl.hooks.list()) == 0
109+
110+
111+
def test_namespaces(gl):
112+
namespace = gl.namespaces.list(all=True)
113+
assert len(namespace) != 0
114+
115+
namespace = gl.namespaces.list(search="root", all=True)[0]
116+
assert namespace.kind == "user"
117+
118+
119+
def test_notification_settings(gl):
120+
settings = gl.notificationsettings.get()
121+
settings.level = gitlab.NOTIFICATION_LEVEL_WATCH
122+
settings.save()
123+
124+
settings = gl.notificationsettings.get()
125+
assert settings.level == gitlab.NOTIFICATION_LEVEL_WATCH
126+
127+
128+
def test_user_activities(gl):
129+
activities = gl.user_activities.list(query_parameters={"from": "2019-01-01"})
130+
assert isinstance(activities, list)
131+
132+
133+
def test_events(gl):
134+
events = gl.events.list()
135+
assert isinstance(events, list)
136+
137+
138+
@pytest.mark.skip
139+
def test_features(gl):
140+
feat = gl.features.set("foo", 30)
141+
assert feat.name == "foo"
142+
assert len(gl.features.list()) == 1
143+
144+
feat.delete()
145+
assert len(gl.features.list()) == 0
146+
147+
148+
def test_pagination(gl, project):
149+
project2 = gl.projects.create({"name": "project-page-2"})
150+
151+
list1 = gl.projects.list(per_page=1, page=1)
152+
list2 = gl.projects.list(per_page=1, page=2)
153+
assert len(list1) == 1
154+
assert len(list2) == 1
155+
assert list1[0].id != list2[0].id
156+
157+
project2.delete()
158+
159+
160+
def test_rate_limits(gl):
161+
settings = gl.settings.get()
162+
settings.throttle_authenticated_api_enabled = True
163+
settings.throttle_authenticated_api_requests_per_period = 1
164+
settings.throttle_authenticated_api_period_in_seconds = 3
165+
settings.save()
166+
167+
projects = list()
168+
for i in range(0, 20):
169+
projects.append(gl.projects.create({"name": str(i) + "ok"}))
170+
171+
with pytest.raises(gitlab.GitlabCreateError) as e:
172+
for i in range(20, 40):
173+
projects.append(
174+
gl.projects.create(
175+
{"name": str(i) + "shouldfail"}, obey_rate_limit=False
176+
)
177+
)
178+
179+
assert "Retry later" in str(e.value)
180+
181+
settings.throttle_authenticated_api_enabled = False
182+
settings.save()
183+
[project.delete() for project in projects]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy