From bb210217f3a88e84624b55c52fce86350858b029 Mon Sep 17 00:00:00 2001 From: mokoro10 Date: Tue, 11 Aug 2026 11:46:02 +0000 Subject: [PATCH] Harden fixed-format PAN validation boundaries --- src/validators/i18n/ind.py | 2 +- tests/i18n/test_ind.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/validators/i18n/ind.py b/src/validators/i18n/ind.py index c1d49400..6ec973ea 100644 --- a/src/validators/i18n/ind.py +++ b/src/validators/i18n/ind.py @@ -44,4 +44,4 @@ def ind_pan(value: str): (Literal[True]): If `value` is a valid PAN card number. (ValidationError): If `value` is an invalid PAN card number. """ - return re.match(r"[A-Z]{5}\d{4}[A-Z]{1}", value) + return re.fullmatch(r"[A-Z]{5}\d{4}[A-Z]{1}", value) diff --git a/tests/i18n/test_ind.py b/tests/i18n/test_ind.py index 1164f131..36aae6d1 100644 --- a/tests/i18n/test_ind.py +++ b/tests/i18n/test_ind.py @@ -26,7 +26,9 @@ def test_returns_true_on_valid_ind_pan(value: str): assert ind_pan(value) -@pytest.mark.parametrize("value", ["ABC5d7896B", "417598346012", "AaaPL1234C"]) +@pytest.mark.parametrize( + "value", ["ABC5d7896B", "417598346012", "AaaPL1234C", "ABCDE9999Kextra", "ABCDE9999K "] +) def test_returns_failed_validation_on_invalid_ind_pan(value: str): """Test returns failed validation on invalid ind pan.""" assert isinstance(ind_pan(value), ValidationError)