mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-05 23:08:25 -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.
|
# TODO get the api to return count of pages as well.
|
||||||
page = get_page_from_request()
|
page = get_page_from_request()
|
||||||
if page is None:
|
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']:
|
if message_type not in ['email', 'sms', 'letter']:
|
||||||
abort(404)
|
abort(404)
|
||||||
filter_args = parse_filter_args(request.args)
|
filter_args = parse_filter_args(request.args)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import itertools
|
import itertools
|
||||||
from datetime import datetime
|
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 flask_login import login_required
|
||||||
|
|
||||||
from app import (
|
from app import (
|
||||||
@@ -15,6 +15,7 @@ from app.statistics_utils import get_formatted_percentage
|
|||||||
from app.utils import (
|
from app.utils import (
|
||||||
generate_next_dict,
|
generate_next_dict,
|
||||||
generate_previous_dict,
|
generate_previous_dict,
|
||||||
|
get_page_from_request,
|
||||||
user_is_platform_admin,
|
user_is_platform_admin,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -194,7 +195,10 @@ def platform_admin_services():
|
|||||||
@login_required
|
@login_required
|
||||||
@user_is_platform_admin
|
@user_is_platform_admin
|
||||||
def platform_admin_list_complaints():
|
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)
|
response = complaint_api_client.get_all_complaints(page=page)
|
||||||
|
|
||||||
prev_page = None
|
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()
|
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', [
|
@pytest.mark.parametrize('number, total, threshold, result', [
|
||||||
(0, 0, 0, False),
|
(0, 0, 0, False),
|
||||||
(1, 1, 0, True),
|
(1, 1, 0, True),
|
||||||
|
|||||||
Reference in New Issue
Block a user