Skip to content

Commit 2ef6fd5

Browse files
committed
SDK-342: Added check for missing postal address
1 parent 9d4baa3 commit 2ef6fd5

File tree

2 files changed

+31
-8
lines changed

2 files changed

+31
-8
lines changed

yoti_python_sdk/activity_details.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def __init__(self, receipt, decrypted_profile=None):
3030
if field.name == config.ATTRIBUTE_STRUCTURED_POSTAL_ADDRESS:
3131
self.try_convert_structured_postal_address_to_dict(field)
3232

33+
self.set_address_to_be_formatted_address_if_null()
34+
3335
self.user_id = receipt['remember_me_id']
3436
self.outcome = receipt['sharing_outcome']
3537

@@ -58,6 +60,11 @@ def try_convert_structured_postal_address_to_dict(self, field):
5860
decoder = json.JSONDecoder(object_pairs_hook=collections.OrderedDict)
5961
self.user_profile[config.ATTRIBUTE_STRUCTURED_POSTAL_ADDRESS] = decoder.decode(field.value)
6062

63+
def set_address_to_be_formatted_address_if_null(self):
64+
if 'postal_address' not in self.user_profile and 'structured_postal_address' in self.user_profile:
65+
if 'formatted_address' in self.user_profile['structured_postal_address']:
66+
self.user_profile['postal_address'] = self.user_profile['structured_postal_address']['formatted_address']
67+
6168
def __iter__(self):
6269
yield 'user_id', self.user_id
6370
yield 'outcome', self.outcome

yoti_python_sdk/tests/test_activity_details.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
from yoti_python_sdk.protobuf.v1.protobuf import Protobuf
1010
from yoti_python_sdk.tests.conftest import successful_receipt
1111

12-
ADDRESS_FORMAT_KEY = "addressFormat"
12+
ADDRESS_FORMAT_KEY = "address_format"
1313
ADDRESS_FORMAT_VALUE = 1
1414
INDIA_FORMAT_VALUE = 2
1515
USA_FORMAT_VALUE = 3
1616

17-
BUILDING_NUMBER_KEY = "buildingNumber"
17+
BUILDING_NUMBER_KEY = "building_number"
1818
BUILDING_NUMBER_VALUE = "15a"
1919

2020
CARE_OF_KEY = "care_of"
@@ -39,18 +39,18 @@
3939
POST_OFFICE_KEY = "post_office"
4040
INDIA_POST_OFFICE_VALUE = "Rajguru Nagar"
4141

42-
ADDRESS_LINE_1_KEY = "addressLineOne"
42+
ADDRESS_LINE_1_KEY = "address_line_1"
4343
ADDRESS_LINE_1_VALUE = "15a North Street"
4444

45-
TOWN_CITY_KEY = "townCity"
45+
TOWN_CITY_KEY = "town_city"
4646
TOWN_CITY_VALUE = "TOWN/CITY NAME"
4747

48-
POSTAL_CODE_KEY = "postalCode"
48+
POSTAL_CODE_KEY = "postal_code"
4949
POSTAL_CODE_VALUE = "SM5 2HW"
5050
INDIA_POSTAL_CODE_VALUE = "141012"
5151
USA_POSTAL_CODE_VALUE = "36201"
5252

53-
COUNTRY_ISO_KEY = "countryIso"
53+
COUNTRY_ISO_KEY = "country_iso"
5454
COUNTRY_ISO_VALUE = "GBR"
5555
INDIA_COUNTRY_ISO_VALUE = "IND"
5656
USA_COUNTRY_ISO_VALUE = "USA"
@@ -60,7 +60,7 @@
6060
INDIA_COUNTRY_VALUE = "India"
6161
USA_COUNTRY_VALUE = "USA"
6262

63-
FORMATTED_ADDRESS_KEY = "formattedAddress"
63+
FORMATTED_ADDRESS_KEY = "formatted_address"
6464
FORMATTED_ADDRESS_VALUE = "15a North Street\nCARSHALTON\nSM5 2HW\nUK"
6565
INDIA_FORMATTED_ADDRESS_VALUE = 'S/O: Name\nHouse No.1111-A\n42nd Street\nTOWN/CITY NAME\nSub-DISTRICT 10\nDISTRICT 10\nPunjab\n141012\nRajgura Nagar\nIndia'
6666
USA_FORMATTED_ADDRESS_VALUE = "15a North Street\nTOWN/CITY NAME\nAL\n36201\nUSA"
@@ -82,7 +82,7 @@ def create_age_verified_field(activity_details, over, encoded_string_verified_va
8282

8383
def create_structured_postal_address_field(activity_details, json_address_value):
8484
activity_details.field = lambda: None
85-
activity_details.field.name = "structured_postal_address"
85+
activity_details.field.name = config.ATTRIBUTE_STRUCTURED_POSTAL_ADDRESS
8686
activity_details.field.value = json_address_value
8787
activity_details.field.content_type = Protobuf.CT_JSON
8888

@@ -267,3 +267,19 @@ def test_try_parse_structured_postal_address_nested_json():
267267
assert actual_structured_postal_address[COUNTRY_KEY] == COUNTRY_VALUE
268268

269269
assert actual_structured_postal_address[FORMATTED_ADDRESS_KEY] == formatted_address_json
270+
271+
272+
def test_set_address_to_be_formatted_address():
273+
activity_details = ActivityDetails(successful_receipt())
274+
275+
structured_postal_address = {FORMATTED_ADDRESS_KEY: FORMATTED_ADDRESS_VALUE}
276+
structured_postal_address_json = json.dumps(structured_postal_address)
277+
278+
create_structured_postal_address_field(activity_details, structured_postal_address_json)
279+
ActivityDetails.try_convert_structured_postal_address_to_dict(activity_details, activity_details.field)
280+
281+
assert 'postal_address' not in activity_details.user_profile
282+
283+
ActivityDetails.set_address_to_be_formatted_address_if_null(activity_details)
284+
285+
assert activity_details.user_profile['postal_address'] == FORMATTED_ADDRESS_VALUE

0 commit comments

Comments
 (0)