Skip to content

Commit 69a99fb

Browse files
committed
EXTENDED_ATTRIBUTES_VACC_TYPE
1 parent 3b946a4 commit 69a99fb

File tree

5 files changed

+23
-10
lines changed

5 files changed

+23
-10
lines changed

lambdas/filenameprocessor/src/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
VACCINE_TYPE_TO_DISEASES_HASH_KEY = "vacc_to_diseases"
2323
ODS_CODE_TO_SUPPLIER_SYSTEM_HASH_KEY = "ods_code_to_supplier"
2424
EXTENDED_ATTRIBUTES_FILE_PREFIX = "Vaccination_Extended_Attributes"
25+
EXTENDED_ATTRIBUTES_VACC_TYPE = "COVID"
2526
DPS_DESTINATION_PREFIX = "dps_destination/"
2627

2728
ERROR_TYPE_TO_STATUS_CODE_MAP = {

lambdas/filenameprocessor/src/file_name_processor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
DPS_DESTINATION_BUCKET_NAME,
2626
ERROR_TYPE_TO_STATUS_CODE_MAP,
2727
EXTENDED_ATTRIBUTES_FILE_PREFIX,
28+
EXTENDED_ATTRIBUTES_VACC_TYPE,
2829
SOURCE_BUCKET_NAME,
2930
FileNotProcessedReason,
3031
FileStatus,
@@ -114,7 +115,8 @@ def handle_unexpected_bucket_name(bucket_name: str, file_key: str) -> dict:
114115
config and overarching design"""
115116
try:
116117
if file_key.startswith(EXTENDED_ATTRIBUTES_FILE_PREFIX):
117-
extended_attribute_identifier = validate_extended_attributes_file_key(file_key)
118+
organization_code = validate_extended_attributes_file_key(file_key)
119+
extended_attribute_identifier = f"{organization_code}_{EXTENDED_ATTRIBUTES_VACC_TYPE}"
118120
logger.error(
119121
"Unable to process file %s due to unexpected bucket name %s",
120122
file_key,
@@ -262,7 +264,8 @@ def handle_extended_attributes_file(
262264
# NB for this to work we have to retool upsert so it accepts overwrites, i.e. ignore the ConditionExpression
263265

264266
try:
265-
extended_attribute_identifier = validate_extended_attributes_file_key(file_key)
267+
organization_code = validate_extended_attributes_file_key(file_key)
268+
extended_attribute_identifier = f"{organization_code}_{EXTENDED_ATTRIBUTES_VACC_TYPE}"
266269

267270
upsert_audit_table(
268271
message_id,

lambdas/filenameprocessor/src/file_validation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ def is_valid_datetime(timestamp: str) -> bool:
4040
def validate_extended_attributes_file_key(file_key: str) -> str:
4141
"""
4242
Checks that all elements of the file key are valid, raises an exception otherwise.
43-
Returns a string containing the organization code and COVID vaccine type needed in the audit table.
43+
Returns a string containing the organization code.
4444
"""
4545
if not match(r"^[^_.]*_[^_.]*_[^_.]*_[^_.]*_[^_.]*_[^_.]*_[^_.]*", file_key):
4646
raise InvalidFileKeyError("Initial file validation failed: invalid extended attributes file key format")
4747

4848
file_key_parts_without_extension, _ = split_file_key(file_key)
4949
organization_code = file_key_parts_without_extension[5]
50-
return f"{organization_code}_COVID"
50+
return organization_code
5151

5252

5353
def validate_batch_file_key(file_key: str) -> tuple[str, str]:

lambdas/filenameprocessor/tests/test_file_key_validation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,18 +114,18 @@ def test_split_file_key(self, _):
114114
self.assertEqual(split_file_key(file_key), expected)
115115

116116
def test_validate_extended_attributes_file_key(self, _):
117-
"""Tests that validate_extended_attributes_file_key returns organization code and COVID vaccine type if all
117+
"""Tests that validate_extended_attributes_file_key returns organization codeif all
118118
elements pass validation, and raises an exception otherwise"""
119119
test_cases_for_success_scenarios = [
120120
# Valid extended attributes file key
121121
(
122122
"Vaccination_Extended_Attributes_v1_5_X8E5B_20000101T00000001.csv",
123-
"X8E5B_COVID",
123+
"X8E5B",
124124
),
125125
# Valid extended attributes file key with different organization code
126126
(
127127
"Vaccination_Extended_Attributes_v1_5_YGM41_20221231T23595999.csv",
128-
"YGM41_COVID",
128+
"YGM41",
129129
),
130130
]
131131

lambdas/filenameprocessor/tests/test_lambda_handler.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@
3535
# Ensure environment variables are mocked before importing from src files
3636
with patch.dict("os.environ", MOCK_ENVIRONMENT_DICT):
3737
from common.clients import REGION_NAME
38-
from constants import AUDIT_TABLE_NAME, AuditTableKeys, FileStatus
38+
from constants import (
39+
AUDIT_TABLE_NAME,
40+
EXTENDED_ATTRIBUTES_VACC_TYPE,
41+
AuditTableKeys,
42+
FileStatus
43+
)
3944
from file_name_processor import handle_record, lambda_handler
4045

4146
s3_client = boto3_client("s3", region_name=REGION_NAME)
@@ -292,7 +297,9 @@ def test_lambda_handler_extended_attributes_success(self):
292297
item = table_items[0]
293298
self.assertEqual(item[AuditTableKeys.MESSAGE_ID]["S"], test_cases[0].message_id)
294299
self.assertEqual(item[AuditTableKeys.FILENAME]["S"], test_cases[0].file_key)
295-
self.assertEqual(item[AuditTableKeys.QUEUE_NAME]["S"], test_cases[0].ods_code + "_COVID")
300+
self.assertEqual(
301+
item[AuditTableKeys.QUEUE_NAME]["S"], test_cases[0].ods_code + "_" + EXTENDED_ATTRIBUTES_VACC_TYPE
302+
)
296303
self.assertEqual(item[AuditTableKeys.STATUS]["S"], "Processed")
297304
self.assertEqual(item[AuditTableKeys.TIMESTAMP]["S"], test_cases[0].created_at_formatted_string)
298305
self.assertEqual(item[AuditTableKeys.EXPIRES_AT]["N"], str(test_cases[0].expires_at))
@@ -347,7 +354,9 @@ def test_lambda_handler_extended_attributes_failure(self):
347354
item = table_items[0]
348355
self.assertEqual(item[AuditTableKeys.MESSAGE_ID]["S"], test_cases[0].message_id)
349356
self.assertEqual(item[AuditTableKeys.FILENAME]["S"], test_cases[0].file_key)
350-
self.assertEqual(item[AuditTableKeys.QUEUE_NAME]["S"], test_cases[0].ods_code + "_COVID")
357+
self.assertEqual(
358+
item[AuditTableKeys.QUEUE_NAME]["S"], test_cases[0].ods_code + "_" + EXTENDED_ATTRIBUTES_VACC_TYPE
359+
)
351360
self.assertEqual(item[AuditTableKeys.TIMESTAMP]["S"], test_cases[0].created_at_formatted_string)
352361
self.assertEqual(item[AuditTableKeys.STATUS]["S"], "Failed")
353362
self.assertEqual(

0 commit comments

Comments
 (0)