mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-25 08:44:23 -04:00
remove the generic 400 error page handler
it just shows a h1, so isn't helpful for people. We can re-use the 500 error page, which includes instructings "Try again later" and instructions on what to do next (check the status page, email notify support). this required refactoring to ensure we can show the 500 error page while still returning the required status code
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
import itertools
|
|
||||||
import os
|
import os
|
||||||
import urllib
|
import urllib
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
@@ -602,8 +601,10 @@ def useful_headers_after_request(response):
|
|||||||
|
|
||||||
|
|
||||||
def register_errorhandlers(application): # noqa (C901 too complex)
|
def register_errorhandlers(application): # noqa (C901 too complex)
|
||||||
def _error_response(error_code):
|
def _error_response(error_code, error_page_template=None):
|
||||||
resp = make_response(render_template("error/{0}.html".format(error_code)), error_code)
|
if error_page_template is None:
|
||||||
|
error_page_template = error_code
|
||||||
|
resp = make_response(render_template("error/{0}.html".format(error_page_template)), error_code)
|
||||||
return useful_headers_after_request(resp)
|
return useful_headers_after_request(resp)
|
||||||
|
|
||||||
@application.errorhandler(HTTPError)
|
@application.errorhandler(HTTPError)
|
||||||
@@ -627,8 +628,10 @@ def register_errorhandlers(application): # noqa (C901 too complex)
|
|||||||
return _error_response(error_code)
|
return _error_response(error_code)
|
||||||
|
|
||||||
@application.errorhandler(400)
|
@application.errorhandler(400)
|
||||||
def handle_400(error):
|
def handle_client_error(error):
|
||||||
return _error_response(400)
|
# This is tripped if we call `abort(400)`.
|
||||||
|
application.logger.exception('Unhandled 400 client error')
|
||||||
|
return _error_response(400, error_page_template=500)
|
||||||
|
|
||||||
@application.errorhandler(410)
|
@application.errorhandler(410)
|
||||||
def handle_gone(error):
|
def handle_gone(error):
|
||||||
@@ -671,19 +674,11 @@ def register_errorhandlers(application): # noqa (C901 too complex)
|
|||||||
u'csrf.invalid_token: Aborting request, user_id: {user_id}',
|
u'csrf.invalid_token: Aborting request, user_id: {user_id}',
|
||||||
extra={'user_id': session['user_id']})
|
extra={'user_id': session['user_id']})
|
||||||
|
|
||||||
resp = make_response(render_template(
|
return _error_response(400, error_page_template=500)
|
||||||
"error/400.html",
|
|
||||||
message=['Something went wrong, please go back and try again.']
|
|
||||||
), 400)
|
|
||||||
return useful_headers_after_request(resp)
|
|
||||||
|
|
||||||
@application.errorhandler(405)
|
@application.errorhandler(405)
|
||||||
def handle_405(error):
|
def handle_method_not_allowed(error):
|
||||||
resp = make_response(render_template(
|
return _error_response(405, error_page_template=500)
|
||||||
"error/400.html",
|
|
||||||
message=['Something went wrong, please go back and try again.']
|
|
||||||
), 405)
|
|
||||||
return useful_headers_after_request(resp)
|
|
||||||
|
|
||||||
@application.errorhandler(WerkzeugHTTPException)
|
@application.errorhandler(WerkzeugHTTPException)
|
||||||
def handle_http_error(error):
|
def handle_http_error(error):
|
||||||
|
|||||||
@@ -234,7 +234,6 @@ def uploaded_letter_preview(service_id, file_id):
|
|||||||
@main.route("/services/<uuid:service_id>/preview-letter-image/<uuid:file_id>")
|
@main.route("/services/<uuid:service_id>/preview-letter-image/<uuid:file_id>")
|
||||||
@user_has_permissions('send_messages')
|
@user_has_permissions('send_messages')
|
||||||
def view_letter_upload_as_preview(service_id, file_id):
|
def view_letter_upload_as_preview(service_id, file_id):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
page = int(request.args.get('page'))
|
page = int(request.args.get('page'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
{% extends "withoutnav_template.html" %}
|
|
||||||
{% block per_page_title %}Bad request{% endblock %}
|
|
||||||
{% block maincolumn_content %}
|
|
||||||
<div class="grid-row">
|
|
||||||
<div class="column-two-thirds">
|
|
||||||
<h1 class="heading-medium">
|
|
||||||
{{ message|join(",")}}
|
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
@@ -51,8 +51,8 @@ def test_csrf_returns_400(logged_in_client, mocker):
|
|||||||
|
|
||||||
assert response.status_code == 400
|
assert response.status_code == 400
|
||||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
assert page.h1.string.strip() == 'Something went wrong, please go back and try again.'
|
assert page.h1.string.strip() == 'Sorry, there’s a problem with GOV.UK Notify'
|
||||||
assert page.title.string.strip() == 'Bad request – GOV.UK Notify'
|
assert page.title.string.strip() == 'Sorry, there’s a problem with the service – GOV.UK Notify'
|
||||||
|
|
||||||
|
|
||||||
def test_csrf_redirects_to_sign_in_page_if_not_signed_in(client, mocker):
|
def test_csrf_redirects_to_sign_in_page_if_not_signed_in(client, mocker):
|
||||||
@@ -70,5 +70,5 @@ def test_405_returns_something_went_wrong_page(client, mocker):
|
|||||||
|
|
||||||
assert response.status_code == 405
|
assert response.status_code == 405
|
||||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
assert page.h1.string.strip() == 'Something went wrong, please go back and try again.'
|
assert page.h1.string.strip() == 'Sorry, there’s a problem with GOV.UK Notify'
|
||||||
assert page.title.string.strip() == 'Bad request – GOV.UK Notify'
|
assert page.title.string.strip() == 'Sorry, there’s a problem with the service – GOV.UK Notify'
|
||||||
|
|||||||
@@ -504,6 +504,7 @@ def test_uploaded_letter_preview_image_400s_for_bad_page_type(
|
|||||||
file_id=fake_uuid,
|
file_id=fake_uuid,
|
||||||
service_id=SERVICE_ONE_ID,
|
service_id=SERVICE_ONE_ID,
|
||||||
page='foo',
|
page='foo',
|
||||||
|
_test_page_title=False,
|
||||||
_expected_status=400,
|
_expected_status=400,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user