Skip to content

Commit 872b205

Browse files
committed
SDK-1443: Remove regex validation from document details
Support for parsing redacted aadhaar numbers
1 parent 79e703d commit 872b205

2 files changed

Lines changed: 45 additions & 11 deletions

File tree

yoti_python_sdk/document_details.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
# -*- coding: utf-8 -*-
2-
import re
3-
42
from . import date_parser
53

64

75
class DocumentDetails(object):
8-
VALIDATION_REGEX = re.compile("^[A-Za-z_]* [A-Za-z]{3} [A-Za-z0-9]{1}.*$")
9-
106
def __init__(self, data):
11-
self.__validate_data(data)
127
self.__parse_data(data)
138

149
@property
@@ -31,14 +26,10 @@ def expiration_date(self):
3126
def issuing_authority(self):
3227
return self.__dict__.get("_DocumentDetails__issuing_authority", None)
3328

34-
def __validate_data(self, data):
35-
if self.VALIDATION_REGEX.search(data):
36-
return
37-
else:
38-
raise ValueError("Invalid value for DocumentDetails")
39-
4029
def __parse_data(self, data):
4130
data = data.split()
31+
if len(data) < 3:
32+
raise ValueError("Invalid value for DocumentDetails")
4233

4334
self.__document_type = data[0]
4435
self.__issuing_country = data[1]

yoti_python_sdk/tests/test_document_details.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,40 @@ def test_parse_3_words():
3434
assert document.issuing_authority is None
3535

3636

37+
def test_parse_redacted_aadhaar():
38+
DATA = "AADHAAR IND ****1234"
39+
40+
document = DocumentDetails(DATA)
41+
42+
assert document.document_type == "AADHAAR"
43+
assert document.issuing_country == "IND"
44+
assert document.document_number == "****1234"
45+
assert document.expiration_date is None
46+
assert document.issuing_authority is None
47+
48+
49+
@pytest.mark.parametrize(
50+
"details, expected_number",
51+
[
52+
("type country **** - authority", "****"),
53+
(
54+
"type country ~!@#$%^&*()-_=+[]{}|;':,./<>? - authority",
55+
"~!@#$%^&*()-_=+[]{}|;':,./<>?",
56+
),
57+
('type country "" - authority', '""'),
58+
("type country \\ - authority", "\\"),
59+
('type country " - authority', '"'),
60+
("type country '' - authority", "''"),
61+
("type country ' - authority", "'"),
62+
],
63+
)
64+
def test_parse_special_characters(details, expected_number):
65+
document = DocumentDetails(details)
66+
67+
assert document.document_type == "type"
68+
assert document.document_number == expected_number
69+
70+
3771
def test_parse_4_words():
3872
DATA = "DRIVING_LICENCE GBR 1234abc 2016-05-01"
3973

@@ -88,3 +122,12 @@ def test_invalid_date():
88122
with pytest.raises(ValueError) as exc:
89123
DocumentDetails(DATA)
90124
assert str(exc.value) == "Invalid value for DocumentDetails"
125+
126+
127+
def test_should_parse_with_double_space():
128+
DATA = "AADHAAR IND ****1234"
129+
130+
document = DocumentDetails(DATA)
131+
132+
assert document.document_type == "AADHAAR"
133+
assert document.document_number == "****1234"

0 commit comments

Comments
 (0)