diff --git a/shierfeng-fastapi-backend/module_business/dependency/test_batch_dependency.py b/shierfeng-fastapi-backend/module_business/dependency/test_batch_dependency.py index 9fe68ff..1185ae3 100644 --- a/shierfeng-fastapi-backend/module_business/dependency/test_batch_dependency.py +++ b/shierfeng-fastapi-backend/module_business/dependency/test_batch_dependency.py @@ -14,10 +14,9 @@ def parse_optional_positive_batch_id(raw: str | None) -> int | None: """解析可选的测试批次请求头。""" if raw is None: return None - try: - batch_id = int(raw) - except (TypeError, ValueError): - raise ServiceWarning('', '测试批次标识必须为正整数') from None + if not isinstance(raw, str) or not raw or not raw.isascii() or not raw.isdigit(): + raise ServiceWarning('', '测试批次标识必须为正整数') + batch_id = int(raw) if batch_id <= 0: raise ServiceWarning('', '测试批次标识必须为正整数') return batch_id diff --git a/shierfeng-fastapi-backend/tests/module_business/test_test_batch_access.py b/shierfeng-fastapi-backend/tests/module_business/test_test_batch_access.py index 46e182c..7678031 100644 --- a/shierfeng-fastapi-backend/tests/module_business/test_test_batch_access.py +++ b/shierfeng-fastapi-backend/tests/module_business/test_test_batch_access.py @@ -82,6 +82,11 @@ class TestBatchHeaderTest(unittest.TestCase): with self.subTest(raw=raw), self.assertRaisesRegex(ServiceWarning, '测试批次标识必须为正整数'): parse_optional_positive_batch_id(raw) + def test_python_coercible_values_are_not_valid_ascii_decimal_literals(self) -> None: + for raw in (' 7', '7 ', '+7', '1_0', '7', True, 7, b'7'): + with self.subTest(raw=raw), self.assertRaisesRegex(ServiceWarning, '测试批次标识必须为正整数'): + parse_optional_positive_batch_id(raw) + class TestBatchAccessTest(unittest.IsolatedAsyncioTestCase): async def asyncSetUp(self) -> None: