6
6
7
7
from jbi .app import app
8
8
from jbi .environment import get_settings
9
- from jbi .models import BugzillaWebhookRequest
9
+ from jbi .models import BugzillaWebhook , BugzillaWebhookRequest
10
+
11
+ EXAMPLE_WEBHOOK = BugzillaWebhook (
12
+ id = 0 ,
13
+ creator = "" ,
14
+ name = "" ,
15
+ url = "http://server/bugzilla_webhook" ,
16
+ event = "create,change,comment" ,
17
+ product = "Any" ,
18
+ component = "Any" ,
19
+ enabled = True ,
20
+ errors = 0 ,
21
+ )
10
22
11
23
12
24
def test_read_root (anon_client ):
@@ -158,28 +170,40 @@ def test_read_heartbeat_all_services_fail(anon_client, mocked_jira, mocked_bugzi
158
170
},
159
171
"bugzilla" : {
160
172
"up" : False ,
173
+ "all_webhooks_enabled" : False ,
161
174
},
162
175
}
163
176
164
177
165
178
def test_read_heartbeat_jira_services_fails (anon_client , mocked_jira , mocked_bugzilla ):
166
179
"""/__heartbeat__ returns 503 when one service is unavailable."""
167
- mocked_bugzilla .logged_in = True
168
180
mocked_jira .get_server_info .return_value = None
169
181
170
182
resp = anon_client .get ("/__heartbeat__" )
171
183
172
184
assert resp .status_code == 503
173
- assert resp .json () == {
174
- "jira" : {
175
- "up" : False ,
176
- "all_projects_are_visible" : False ,
177
- "all_projects_have_permissions" : False ,
178
- "all_projects_components_exist" : False ,
179
- },
180
- "bugzilla" : {
181
- "up" : True ,
182
- },
185
+ assert resp .json ()["jira" ] == {
186
+ "up" : False ,
187
+ "all_projects_are_visible" : False ,
188
+ "all_projects_have_permissions" : False ,
189
+ "all_projects_components_exist" : False ,
190
+ }
191
+
192
+
193
+ def test_read_heartbeat_bugzilla_webhooks_fails (
194
+ anon_client , mocked_jira , mocked_bugzilla
195
+ ):
196
+ mocked_bugzilla .logged_in = True
197
+ mocked_bugzilla .list_webhooks .return_value = [
198
+ EXAMPLE_WEBHOOK .copy (update = {"enabled" : False })
199
+ ]
200
+
201
+ resp = anon_client .get ("/__heartbeat__" )
202
+
203
+ assert resp .status_code == 503
204
+ assert resp .json ()["bugzilla" ] == {
205
+ "up" : True ,
206
+ "all_webhooks_enabled" : False ,
183
207
}
184
208
185
209
@@ -194,22 +218,16 @@ def test_read_heartbeat_bugzilla_services_fails(
194
218
resp = anon_client .get ("/__heartbeat__" )
195
219
196
220
assert resp .status_code == 503
197
- assert resp .json () == {
198
- "jira" : {
199
- "up" : True ,
200
- "all_projects_are_visible" : True ,
201
- "all_projects_have_permissions" : False ,
202
- "all_projects_components_exist" : False ,
203
- },
204
- "bugzilla" : {
205
- "up" : False ,
206
- },
221
+ assert resp .json ()["bugzilla" ] == {
222
+ "up" : False ,
223
+ "all_webhooks_enabled" : False ,
207
224
}
208
225
209
226
210
227
def test_read_heartbeat_success (anon_client , mocked_jira , mocked_bugzilla ):
211
228
"""/__heartbeat__ returns 200 when checks succeed."""
212
229
mocked_bugzilla .logged_in = True
230
+ mocked_bugzilla .list_webhooks .return_value = [EXAMPLE_WEBHOOK ]
213
231
mocked_jira .get_server_info .return_value = {}
214
232
mocked_jira .projects .return_value = [{"key" : "DevTest" }]
215
233
mocked_jira .get_project_components .return_value = [{"name" : "Main" }]
@@ -234,34 +252,28 @@ def test_read_heartbeat_success(anon_client, mocked_jira, mocked_bugzilla):
234
252
},
235
253
"bugzilla" : {
236
254
"up" : True ,
255
+ "all_webhooks_enabled" : True ,
237
256
},
238
257
}
239
258
240
259
241
260
def test_jira_heartbeat_visible_projects (anon_client , mocked_jira , mocked_bugzilla ):
242
261
"""/__heartbeat__ fails if configured projects don't match."""
243
- mocked_bugzilla .logged_in = True
244
262
mocked_jira .get_server_info .return_value = {}
245
263
246
264
resp = anon_client .get ("/__heartbeat__" )
247
265
248
266
assert resp .status_code == 503
249
- assert resp .json () == {
250
- "jira" : {
251
- "up" : True ,
252
- "all_projects_are_visible" : False ,
253
- "all_projects_have_permissions" : False ,
254
- "all_projects_components_exist" : False ,
255
- },
256
- "bugzilla" : {
257
- "up" : True ,
258
- },
267
+ assert resp .json ()["jira" ] == {
268
+ "up" : True ,
269
+ "all_projects_are_visible" : False ,
270
+ "all_projects_have_permissions" : False ,
271
+ "all_projects_components_exist" : False ,
259
272
}
260
273
261
274
262
275
def test_jira_heartbeat_missing_permissions (anon_client , mocked_jira , mocked_bugzilla ):
263
276
"""/__heartbeat__ fails if configured projects don't match."""
264
- mocked_bugzilla .logged_in = True
265
277
mocked_jira .get_server_info .return_value = {}
266
278
mocked_jira .get_project_components .return_value = [{"name" : "Main" }]
267
279
mocked_jira .get_project_permission_scheme .return_value = {
@@ -276,21 +288,17 @@ def test_jira_heartbeat_missing_permissions(anon_client, mocked_jira, mocked_bug
276
288
resp = anon_client .get ("/__heartbeat__" )
277
289
278
290
assert resp .status_code == 503
279
- assert resp .json () == {
280
- "jira" : {
281
- "up" : True ,
282
- "all_projects_are_visible" : False ,
283
- "all_projects_have_permissions" : False ,
284
- "all_projects_components_exist" : True ,
285
- },
286
- "bugzilla" : {
287
- "up" : True ,
288
- },
291
+ assert resp .json ()["jira" ] == {
292
+ "up" : True ,
293
+ "all_projects_are_visible" : False ,
294
+ "all_projects_have_permissions" : False ,
295
+ "all_projects_components_exist" : True ,
289
296
}
290
297
291
298
292
299
def test_jira_heartbeat_unknown_components (anon_client , mocked_jira , mocked_bugzilla ):
293
300
mocked_bugzilla .logged_in = True
301
+ mocked_bugzilla .list_webhooks .return_value = [EXAMPLE_WEBHOOK ]
294
302
mocked_jira .get_server_info .return_value = {}
295
303
296
304
resp = anon_client .get ("/__heartbeat__" )
@@ -299,9 +307,10 @@ def test_jira_heartbeat_unknown_components(anon_client, mocked_jira, mocked_bugz
299
307
assert not resp .json ()["jira" ]["all_projects_components_exist" ]
300
308
301
309
302
- def test_head_heartbeat (anon_client , mocked_jira , mocked_bugzilla ):
310
+ def test_head_heartbeat_success (anon_client , mocked_jira , mocked_bugzilla ):
303
311
"""/__heartbeat__ support head requests"""
304
312
mocked_bugzilla .logged_in = True
313
+ mocked_bugzilla .list_webhooks .return_value = [EXAMPLE_WEBHOOK ]
305
314
mocked_jira .get_server_info .return_value = {}
306
315
mocked_jira .projects .return_value = [{"key" : "DevTest" }]
307
316
mocked_jira .get_project_components .return_value = [{"name" : "Main" }]
0 commit comments