Skip to content

Commit 06f861a

Browse files
committed
Test for job-server error
1 parent 9107d5f commit 06f861a

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

airlock/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ def request_release_files(request, request_id):
300300
except api.RequestPermissionDenied as exc:
301301
raise PermissionDenied(str(exc))
302302
except requests.HTTPError as err:
303-
if settings.DEBUG: # pragma: nocover
303+
if settings.DEBUG:
304304
return TemplateResponse(
305305
request,
306306
"jobserver-error.html",

tests/integration/test_views.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from io import BytesIO
2+
13
import pytest
24
import requests
35
from django.contrib import messages
@@ -499,6 +501,41 @@ def test_requests_release_jobserver_403(client_with_permission, release_files_st
499501
assert response.status_code == 403
500502

501503

504+
@pytest.mark.parametrize(
505+
"content_type,content,should_contain_iframe",
506+
[
507+
("text/plain", b"An error from job-server", False),
508+
("text/html", b"<p>An error from job-server</p>", True)
509+
]
510+
)
511+
def test_requests_release_jobserver_403_with_debug(
512+
client_with_permission, release_files_stubber, settings,
513+
content_type, content, should_contain_iframe
514+
):
515+
settings.DEBUG = True
516+
release_request = factories.create_release_request(
517+
"workspace",
518+
id="request_id",
519+
status=Status.SUBMITTED,
520+
)
521+
factories.write_request_file(release_request, "test/file.txt", "test")
522+
523+
response = requests.Response()
524+
response.status_code = 403
525+
response.headers = {"Content-Type": content_type}
526+
response.raw = BytesIO(content)
527+
api403 = requests.HTTPError(response=response)
528+
release_files_stubber(release_request, body=api403)
529+
530+
# test 403 is handled
531+
response = client_with_permission.post("/requests/release/request_id")
532+
# DEBUG is on, so we return the job-server error
533+
assert response.status_code == 200
534+
assert "An error from job-server" in response.rendered_content
535+
contains_iframe = "<iframe" in response.rendered_content
536+
assert contains_iframe == should_contain_iframe
537+
538+
502539
def test_requests_release_files_404(client_with_permission, release_files_stubber):
503540
release_request = factories.create_release_request(
504541
"workspace",

0 commit comments

Comments
 (0)