Skip to content

Commit 7228fc0

Browse files
author
thepetk
committed
Add tests resources
1 parent c4a5e10 commit 7228fc0

File tree

6 files changed

+219
-38
lines changed

6 files changed

+219
-38
lines changed

gitlab2sentry/resources.py

Lines changed: 146 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,164 @@
33
from collections import namedtuple
44
from typing import List, Tuple
55

6+
from tests.resources import (
7+
TEST_DSN_BRANCH_NAME,
8+
TEST_DSN_MR_CONTENT,
9+
TEST_DSN_MR_DESCRIPTION,
10+
TEST_DSN_MR_TITLE,
11+
TEST_GITLAB_AUTHOR_EMAIL,
12+
TEST_GITLAB_AUTHOR_NAME,
13+
TEST_GITLAB_GRAPHQL_PAGE_LENGTH,
14+
TEST_GITLAB_GRAPHQL_SUFFIX,
15+
TEST_GITLAB_GRAPHQL_TIMEOUT,
16+
TEST_GITLAB_MR_KEYWORD,
17+
TEST_GITLAB_RMV_SRC_BRANCH,
18+
TEST_GITLAB_TOKEN,
19+
TEST_GITLAB_URL,
20+
TEST_SENTRY_DSN,
21+
TEST_SENTRY_ORG_SLUG,
22+
TEST_SENTRY_TOKEN,
23+
TEST_SENTRY_URL,
24+
TEST_SENTRYCLIRC_BRANCH_NAME,
25+
TEST_SENTRYCLIRC_COM_MSG,
26+
TEST_SENTRYCLIRC_FILEPATH,
27+
TEST_SENTRYCLIRC_MR_CONTENT,
28+
TEST_SENTRYCLIRC_MR_DESCRIPTION,
29+
TEST_SENTRYCLIRC_MR_TITLE,
30+
)
31+
32+
33+
def is_test_env(env: str) -> bool:
34+
return env == "test"
35+
636
try:
737
ENV = os.getenv("ENV", "production")
8-
TEST_SENTRY_URL = "http://sentry.test.com"
9-
TEST_SENTRY_DSN = "http://test.sentry.test.com"
10-
TEST_SENTRY_TOKEN = "test-token"
11-
TEST_GITLAB_URL = "http://test-gitlab-url"
12-
TEST_GITLAB_TOKEN = "test-token"
1338

1439
# Sentry configuration
15-
SENTRY_URL = TEST_SENTRY_URL if ENV == "test" else os.environ["SENTRY_URL"]
16-
SENTRY_TOKEN = TEST_SENTRY_TOKEN if ENV == "test" else os.environ["SENTRY_TOKEN"]
17-
SENTRY_DSN = TEST_SENTRY_DSN if ENV == "test" else os.environ["SENTRY_DSN"]
40+
SENTRY_URL = (
41+
TEST_SENTRY_URL
42+
if is_test_env(ENV)
43+
else os.environ["SENTRY_URL"]
44+
)
45+
SENTRY_TOKEN = (
46+
TEST_SENTRY_TOKEN
47+
if is_test_env(ENV)
48+
else os.environ["SENTRY_TOKEN"]
49+
)
50+
SENTRY_DSN = (
51+
TEST_SENTRY_DSN
52+
if is_test_env(ENV)
53+
else os.environ["SENTRY_DSN"]
54+
)
1855
SENTRY_ENV = os.getenv("SENTRY_ENV", "production")
19-
SENTRY_ORG_SLUG = os.environ["SENTRY_ORG_SLUG"]
20-
56+
SENTRY_ORG_SLUG = (
57+
TEST_SENTRY_ORG_SLUG
58+
if is_test_env(ENV)
59+
else os.environ["SENTRY_ORG_SLUG"]
60+
)
2161
# DSN MR configuration.
22-
DSN_MR_CONTENT = os.environ["GITLAB_DSN_MR_CONTENT"]
23-
DSN_BRANCH_NAME = os.environ["GITLAB_DSN_MR_BRANCH_NAME"]
24-
DSN_MR_TITLE = os.environ["GITLAB_DSN_MR_TITLE"]
25-
DSN_MR_DESCRIPTION = os.environ["GITLAB_DSN_MR_DESCRIPTION"]
62+
DSN_MR_CONTENT = (
63+
TEST_DSN_MR_CONTENT
64+
if is_test_env(ENV)
65+
else os.environ["GITLAB_DSN_MR_CONTENT"]
66+
)
67+
DSN_BRANCH_NAME = (
68+
TEST_DSN_BRANCH_NAME
69+
if is_test_env(ENV)
70+
else os.environ["GITLAB_DSN_MR_BRANCH_NAME"]
71+
)
72+
DSN_MR_TITLE = (
73+
TEST_DSN_MR_TITLE
74+
if is_test_env(ENV)
75+
else os.environ["GITLAB_DSN_MR_TITLE"]
76+
)
77+
DSN_MR_DESCRIPTION = (
78+
TEST_DSN_MR_DESCRIPTION
79+
if is_test_env(ENV)
80+
else os.environ["GITLAB_DSN_MR_DESCRIPTION"]
81+
)
2682

2783
# Sentryclirc MR configuration.
28-
SENTRYCLIRC_MR_CONTENT = os.environ["GITLAB_SENTRYCLIRC_MR_CONTENT"]
29-
SENTRYCLIRC_BRANCH_NAME = os.environ["GITLAB_SENTRYCLIRC_MR_BRANCH_NAME"]
30-
SENTRYCLIRC_MR_TITLE = os.environ["GITLAB_SENTRYCLIRC_MR_TITLE"]
31-
SENTRYCLIRC_FILEPATH = os.environ["GITLAB_SENTRYCLIRC_MR_FILEPATH"]
32-
SENTRYCLIRC_COM_MSG = os.environ["GITLAB_SENTRYCLIRC_MR_COMMIT_MSG"]
33-
SENTRYCLIRC_MR_DESCRIPTION = os.environ["GITLAB_SENTRYCLIRC_MR_DESCRIPTION"]
34-
84+
SENTRYCLIRC_MR_CONTENT = (
85+
TEST_SENTRYCLIRC_MR_CONTENT
86+
if is_test_env(ENV)
87+
else os.environ["GITLAB_SENTRYCLIRC_MR_CONTENT"]
88+
)
89+
SENTRYCLIRC_BRANCH_NAME = (
90+
TEST_SENTRYCLIRC_BRANCH_NAME
91+
if is_test_env(ENV)
92+
else os.environ["GITLAB_SENTRYCLIRC_MR_BRANCH_NAME"]
93+
)
94+
SENTRYCLIRC_MR_TITLE = (
95+
TEST_SENTRYCLIRC_MR_TITLE
96+
if is_test_env(ENV)
97+
else os.environ["GITLAB_SENTRYCLIRC_MR_TITLE"]
98+
)
99+
SENTRYCLIRC_FILEPATH = (
100+
TEST_SENTRYCLIRC_FILEPATH
101+
if is_test_env(ENV)
102+
else os.environ["GITLAB_SENTRYCLIRC_MR_FILEPATH"]
103+
)
104+
SENTRYCLIRC_COM_MSG = (
105+
TEST_SENTRYCLIRC_COM_MSG
106+
if is_test_env(ENV)
107+
else os.environ["GITLAB_SENTRYCLIRC_MR_COMMIT_MSG"]
108+
)
109+
SENTRYCLIRC_MR_DESCRIPTION = (
110+
TEST_SENTRYCLIRC_MR_DESCRIPTION
111+
if is_test_env(ENV)
112+
else os.environ["GITLAB_SENTRYCLIRC_MR_DESCRIPTION"]
113+
)
35114
# Gitlab Configuration.
36-
GITLAB_URL = TEST_GITLAB_URL if ENV == "test" else os.environ["GITLAB_URL"]
37-
GITLAB_TOKEN = TEST_GITLAB_TOKEN if ENV == "test" else os.environ["GITLAB_TOKEN"]
38-
GITLAB_GRAPHQL_SUFFIX = os.environ["GITLAB_GRAPHQL_SUFFIX"]
39-
GITLAB_GRAPHQL_TIMEOUT = int(os.environ["GITLAB_AIOHTTP_TIMEOUT"])
40-
GITLAB_GRAPHQL_PAGE_LENGTH = int(os.environ["GITLAB_GRAPHQL_PAGE_LENGTH"])
115+
GITLAB_URL = (
116+
TEST_GITLAB_URL
117+
if is_test_env(ENV)
118+
else os.environ["GITLAB_URL"]
119+
)
120+
GITLAB_TOKEN = (
121+
TEST_GITLAB_TOKEN
122+
if is_test_env(ENV)
123+
else os.environ["GITLAB_TOKEN"]
124+
)
125+
GITLAB_GRAPHQL_SUFFIX = (
126+
TEST_GITLAB_GRAPHQL_SUFFIX
127+
if is_test_env(ENV)
128+
else os.environ["GITLAB_GRAPHQL_SUFFIX"]
129+
)
130+
GITLAB_GRAPHQL_TIMEOUT = (
131+
TEST_GITLAB_GRAPHQL_TIMEOUT
132+
if is_test_env(ENV)
133+
else int(os.environ["GITLAB_AIOHTTP_TIMEOUT"])
134+
)
135+
GITLAB_GRAPHQL_PAGE_LENGTH = (
136+
TEST_GITLAB_GRAPHQL_PAGE_LENGTH
137+
if is_test_env(ENV)
138+
else int(os.environ["GITLAB_GRAPHQL_PAGE_LENGTH"])
139+
)
41140
GITLAB_GROUP_IDENTIFIER = os.getenv("GITLAB_GROUP_IDENTIFIER", "")
42-
GITLAB_AUTHOR_EMAIL = os.environ["GITLAB_AUTHOR_EMAIL"]
43-
GITLAB_AUTHOR_NAME = os.environ["GITLAB_AUTHOR_NAME"]
44-
GITLAB_PROJECT_CREATION_LIMIT = int(os.getenv("GITLAB_CREATION_DAYS_LIMIT", 0))
45-
GITLAB_RMV_SRC_BRANCH = os.environ["GITLAB_REMOVE_SOURCE"]
141+
GITLAB_AUTHOR_EMAIL = (
142+
TEST_GITLAB_AUTHOR_EMAIL
143+
if is_test_env(ENV)
144+
else os.environ["GITLAB_AUTHOR_EMAIL"]
145+
)
146+
GITLAB_AUTHOR_NAME = (
147+
TEST_GITLAB_AUTHOR_NAME
148+
if is_test_env(ENV)
149+
else os.environ["GITLAB_AUTHOR_NAME"]
150+
)
151+
GITLAB_PROJECT_CREATION_LIMIT = int(os.getenv("GITLAB_CREATION_DAYS_LIMIT", 30))
152+
GITLAB_RMV_SRC_BRANCH = (
153+
TEST_GITLAB_RMV_SRC_BRANCH
154+
if is_test_env(ENV)
155+
else os.environ["GITLAB_REMOVE_SOURCE"]
156+
)
46157
GITLAB_MENTIONS_LIST = os.getenv("GITLAB_MENTIONS")
47158
GITLAB_MENTIONS_ACCESS_LEVEL = int(os.getenv("GITLAB_MENTIONS_ACCESS_LEVEL", 40))
48-
GITLAB_MR_KEYWORD = os.environ["GITLAB_MR_KEYWORD"]
159+
GITLAB_MR_KEYWORD = (
160+
TEST_GITLAB_MR_KEYWORD
161+
if is_test_env(ENV)
162+
else os.environ["GITLAB_MR_KEYWORD"]
163+
)
49164
except TypeError as type_error:
50165
logging.error(
51166
"<Gitlab2Sentry>: g2s.yaml not configured properly - {}".format(str(type_error))

gitlab2sentry/utils/sentry_provider.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import requests
66
from requests import Response
7+
from slugify import slugify
78

89
from gitlab2sentry.exceptions import (
910
SentryProjectCreationFailed,

tests/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ def create_graphql_json_object(**kwargs):
8484
blob_item = {
8585
"name": SENTRYCLIRC_FILEPATH,
8686
"rawTextBlob": DSN_MR_CONTENT.format(
87-
sentry_url=TEST_SENTRY_URL, dsn=TEST_SENTRY_DSN
87+
sentry_url=TEST_SENTRY_URL,
88+
dsn=TEST_SENTRY_DSN,
89+
project_slug=TEST_PROJECT_NAME
8890
),
8991
}
9092
else:

tests/resources.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
TEST_SENTRY_URL = "http://sentry.test.com"
2+
TEST_SENTRY_DSN = "http://test.sentry.test.com"
3+
TEST_SENTRY_TOKEN = "test-token"
4+
TEST_GITLAB_URL = "http://test-gitlab-url"
5+
TEST_GITLAB_TOKEN = "test-token"
6+
7+
TEST_SENTRY_ENV = "test"
8+
TEST_SENTRY_ORG_SLUG = "test_org"
9+
10+
# DSN MR configuration.
11+
TEST_DSN_MR_CONTENT = """
12+
## File generated by gitlab2sentry
13+
[defaults]
14+
url = {sentry_url}
15+
dsn = {dsn}
16+
project = {project_slug}
17+
"""
18+
TEST_DSN_BRANCH_NAME = "auto_add_sentry_dsn"
19+
TEST_DSN_MR_TITLE = (
20+
"[gitlab2sentry] Merge me to add your sentry DSN to {project_name}"
21+
)
22+
TEST_DSN_MR_DESCRIPTION = """
23+
{mentions} Congrats, your Sentry project has been
24+
created, merge this
25+
to finalize your Sentry integration of
26+
{name_with_namespace} :clap: :cookie:
27+
"""
28+
29+
# Sentryclirc MR configuration.
30+
TEST_SENTRYCLIRC_MR_CONTENT = """
31+
## File generated by gitlab2sentry
32+
[defaults]
33+
url = {sentry_url}
34+
"""
35+
TEST_SENTRYCLIRC_BRANCH_NAME = "auto_add_sentry"
36+
TEST_SENTRYCLIRC_MR_TITLE = (
37+
"[gitlab2sentry] Merge me to add sentry to {project_name} or close me"
38+
)
39+
TEST_SENTRYCLIRC_FILEPATH = ".sentryclirc"
40+
TEST_SENTRYCLIRC_COM_MSG = "Update .sentryclirc"
41+
TEST_SENTRYCLIRC_MR_DESCRIPTION = """
42+
{mentions} Merge this and it will automatically
43+
create a Sentry project \n
44+
for {name_with_namespace} :cookie:
45+
"""
46+
47+
# Gitlab Configuration.
48+
TEST_GITLAB_GRAPHQL_SUFFIX = "test-content"
49+
TEST_GITLAB_GRAPHQL_TIMEOUT = 10
50+
TEST_GITLAB_GRAPHQL_PAGE_LENGTH = 0
51+
TEST_GITLAB_AUTHOR_EMAIL = "test-content"
52+
TEST_GITLAB_AUTHOR_NAME = "test-content"
53+
TEST_GITLAB_RMV_SRC_BRANCH = True
54+
TEST_GITLAB_MR_KEYWORD = "sentry"

tests/test_gitlab2sentry.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,10 @@ def test_create_sentry_project(g2s_fixture, payload_new_project, mocker):
215215
)
216216
assert (
217217
g2s_fixture._create_sentry_project(
218-
payload_new_project["node"]["fullPath"], TEST_GROUP_NAME
218+
payload_new_project["node"]["fullPath"],
219+
TEST_GROUP_NAME,
220+
payload_new_project["node"]["name"],
221+
payload_new_project["node"]["name"]
219222
)["name"]
220223
== TEST_GROUP_NAME
221224
)
@@ -226,7 +229,10 @@ def test_create_sentry_project(g2s_fixture, payload_new_project, mocker):
226229
side_effect=SentryProjectCreationFailed("error"),
227230
)
228231
assert not g2s_fixture._create_sentry_project(
229-
payload_new_project["node"]["fullPath"], TEST_GROUP_NAME
232+
payload_new_project["node"]["fullPath"],
233+
TEST_GROUP_NAME,
234+
payload_new_project["node"]["name"],
235+
payload_new_project["node"]["name"]
230236
)
231237

232238
mocker.patch.object(
@@ -235,7 +241,10 @@ def test_create_sentry_project(g2s_fixture, payload_new_project, mocker):
235241
side_effect=Exception("error"),
236242
)
237243
assert not g2s_fixture._create_sentry_project(
238-
payload_new_project["node"]["fullPath"], TEST_GROUP_NAME
244+
payload_new_project["node"]["fullPath"],
245+
TEST_GROUP_NAME,
246+
payload_new_project["node"]["name"],
247+
payload_new_project["node"]["name"]
239248
)
240249

241250

tests/test_sentry_provider.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,18 @@ def test_get_or_create_project(sentry_provider_fixture, mocker):
5858
mocker.patch("requests.post", return_value=mocked_response(404))
5959
mocker.patch("requests.get", return_value=mocked_response(201))
6060
assert sentry_provider_fixture.get_or_create_project(
61-
TEST_GROUP_NAME, TEST_PROJECT_NAME
61+
TEST_GROUP_NAME, TEST_PROJECT_NAME, TEST_PROJECT_NAME
6262
) == json.loads(DETAIL.decode())
6363

6464
mocker.patch("requests.get", return_value=mocked_response(200))
6565
assert sentry_provider_fixture.get_or_create_project(
66-
TEST_GROUP_NAME, TEST_PROJECT_NAME
66+
TEST_GROUP_NAME, TEST_PROJECT_NAME, TEST_PROJECT_NAME
6767
) == json.loads(DETAIL.decode())
6868

6969
mocker.patch("requests.get", return_value=mocked_response(400))
7070
with pytest.raises(SentryProjectCreationFailed):
7171
assert sentry_provider_fixture.get_or_create_project(
72-
TEST_GROUP_NAME, TEST_PROJECT_NAME
72+
TEST_GROUP_NAME, TEST_PROJECT_NAME, TEST_PROJECT_NAME
7373
)
7474

7575

0 commit comments

Comments
 (0)