mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-26 17:24:23 -04:00
Merge pull request #2125 from alphagov/handle-405s
handle 405 METHOD NOT ALLOWEDs
This commit is contained in:
@@ -34,9 +34,8 @@ from notifications_utils.recipients import (
|
|||||||
)
|
)
|
||||||
from notifications_utils.formatters import formatted_list
|
from notifications_utils.formatters import formatted_list
|
||||||
from notifications_utils.sanitise_text import SanitiseASCII
|
from notifications_utils.sanitise_text import SanitiseASCII
|
||||||
from werkzeug.exceptions import abort
|
from werkzeug.exceptions import abort, HTTPException as WerkzeugHTTPException
|
||||||
from werkzeug.local import LocalProxy
|
from werkzeug.local import LocalProxy
|
||||||
from werkzeug.routing import RequestRedirect
|
|
||||||
|
|
||||||
from app import proxy_fix
|
from app import proxy_fix
|
||||||
from app.config import configs
|
from app.config import configs
|
||||||
@@ -584,9 +583,21 @@ def register_errorhandlers(application): # noqa (C901 too complex)
|
|||||||
), 400)
|
), 400)
|
||||||
return useful_headers_after_request(resp)
|
return useful_headers_after_request(resp)
|
||||||
|
|
||||||
@application.errorhandler(RequestRedirect)
|
@application.errorhandler(405)
|
||||||
def handle_301(error):
|
def handle_405(error):
|
||||||
return error
|
resp = make_response(render_template(
|
||||||
|
"error/400.html",
|
||||||
|
message=['Something went wrong, please go back and try again.']
|
||||||
|
), 405)
|
||||||
|
return useful_headers_after_request(resp)
|
||||||
|
|
||||||
|
@application.errorhandler(WerkzeugHTTPException)
|
||||||
|
def handle_http_error(error):
|
||||||
|
if error.code == 301:
|
||||||
|
# RequestRedirect exception
|
||||||
|
return error
|
||||||
|
|
||||||
|
return _error_response(error.code)
|
||||||
|
|
||||||
@application.errorhandler(500)
|
@application.errorhandler(500)
|
||||||
@application.errorhandler(Exception)
|
@application.errorhandler(Exception)
|
||||||
|
|||||||
@@ -60,3 +60,11 @@ def test_csrf_redirects_to_sign_in_page_if_not_signed_in(client, mocker):
|
|||||||
|
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
assert response.location == url_for('main.sign_in', next='/cookies', _external=True)
|
assert response.location == url_for('main.sign_in', next='/cookies', _external=True)
|
||||||
|
|
||||||
|
|
||||||
|
def test_405_returns_something_went_wrong_page(client, mocker):
|
||||||
|
response = client.post('/')
|
||||||
|
|
||||||
|
assert response.status_code == 405
|
||||||
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
|
assert page.h1.string.strip() == 'Something went wrong, please go back and try again.'
|
||||||
|
|||||||
Reference in New Issue
Block a user