mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-12 17:34:16 -04:00
Raise error if getting complaints page with invalid page param
If the `page` parameter passed to the `platform-admin/complaints` pageis not an integer, we should return a `404` error page.
This commit is contained in:
@@ -199,7 +199,7 @@ def get_notifications(service_id, message_type, status_override=None):
|
||||
# TODO get the api to return count of pages as well.
|
||||
page = get_page_from_request()
|
||||
if page is None:
|
||||
abort(404, "Invalid page argument ({}) reverting to page 1.".format(request.args['page'], None))
|
||||
abort(404, "Invalid page argument ({}).".format(request.args.get('page')))
|
||||
if message_type not in ['email', 'sms', 'letter']:
|
||||
abort(404)
|
||||
filter_args = parse_filter_args(request.args)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import itertools
|
||||
from datetime import datetime
|
||||
|
||||
from flask import render_template, request, url_for
|
||||
from flask import abort, render_template, request, url_for
|
||||
from flask_login import login_required
|
||||
|
||||
from app import (
|
||||
@@ -15,6 +15,7 @@ from app.statistics_utils import get_formatted_percentage
|
||||
from app.utils import (
|
||||
generate_next_dict,
|
||||
generate_previous_dict,
|
||||
get_page_from_request,
|
||||
user_is_platform_admin,
|
||||
)
|
||||
|
||||
@@ -194,7 +195,10 @@ def platform_admin_services():
|
||||
@login_required
|
||||
@user_is_platform_admin
|
||||
def platform_admin_list_complaints():
|
||||
page = int(request.args.get('page', 1))
|
||||
page = get_page_from_request()
|
||||
if page is None:
|
||||
abort(404, "Invalid page argument ({}).".format(request.args.get('page')))
|
||||
|
||||
response = complaint_api_client.get_all_complaints(page=page)
|
||||
|
||||
prev_page = None
|
||||
|
||||
@@ -706,6 +706,17 @@ def test_should_show_complaints_with_next_previous(mocker, client, platform_admi
|
||||
assert 'page 1' in prev_page_link.text.strip()
|
||||
|
||||
|
||||
def test_platform_admin_list_complaints_returns_404_with_invalid_page(mocker, client, platform_admin_user):
|
||||
mock_get_user(mocker, user=platform_admin_user)
|
||||
client.login(platform_admin_user)
|
||||
|
||||
mocker.patch('app.complaint_api_client.get_all_complaints', return_value={'complaints': [], 'links': {}})
|
||||
|
||||
response = client.get(url_for('main.platform_admin_list_complaints', page='invalid'))
|
||||
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
@pytest.mark.parametrize('number, total, threshold, result', [
|
||||
(0, 0, 0, False),
|
||||
(1, 1, 0, True),
|
||||
|
||||
Reference in New Issue
Block a user