From 5090e59bb1b4dfffbc3f15b8f1c9443de533cf57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Sat, 4 Feb 2023 10:55:49 +0800 Subject: [PATCH] Added to redirect when the page size is invalid in the Pagination utility. --- src/accounting/utils/pagination.py | 2 +- tests/test_utils.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/accounting/utils/pagination.py b/src/accounting/utils/pagination.py index dbb47d5..3a2eb99 100644 --- a/src/accounting/utils/pagination.py +++ b/src/accounting/utils/pagination.py @@ -117,7 +117,7 @@ class Pagination(t.Generic[T]): page_size: int = int(request.args["page-size"]) except ValueError: raise Redirection(self.__uri_set("page-size", None)) - if page_size == self.DEFAULT_PAGE_SIZE: + if page_size == self.DEFAULT_PAGE_SIZE or page_size < 1: raise Redirection(self.__uri_set("page-size", None)) return page_size diff --git a/tests/test_utils.py b/tests/test_utils.py index 3058339..9052deb 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -276,6 +276,9 @@ class PaginationTestCase(unittest.TestCase): f"&page-size={Pagination.DEFAULT_PAGE_SIZE}" "&page-no=37&next=%2F", range(1, 691), "q=word&page-no=37&next=%2F") + # An invalid page size + self.__test_malformed("q=word&page-size=0&page-no=37&next=%2F", + range(1, 691), "q=word&page-no=37&next=%2F") # A malformed page number self.__test_malformed("q=word&page-size=15&page-no=37a&next=%2F", range(1, 691), "q=word&page-size=15&next=%2F")