@@ -65,6 +65,8 @@ def test_validate_file_key(self, mock_hkeys, mock_hget):
6565 (VALID_FLU_EMIS_FILE_KEY .upper (), "YGM41" , ("FLU" , "EMIS" )),
6666 # Valid RSV/ RAVS file key
6767 (VALID_RSV_RAVS_FILE_KEY , "X8E5B" , ("RSV" , "RAVS" )),
68+ # Valid file key with checksum
69+ ("RSV_Vaccinations_v5_X8E5B_20000101T00000001_qZYjV+omQMU=.csv" , "X8E5B" , ("RSV" , "RAVS" )),
6870 ]
6971
7072 for file_key , ods_code , expected_result in test_cases_for_success_scenarios :
@@ -73,43 +75,41 @@ def test_validate_file_key(self, mock_hkeys, mock_hget):
7375 mock_hkeys .assert_called_with ("vacc_to_diseases" )
7476 mock_hget .assert_called_with ("ods_code_to_supplier" , ods_code )
7577
76- key_format_error_message = "Initial file validation failed: invalid file key format"
77- invalid_file_key_error_message = "Initial file validation failed: invalid file key"
7878 test_cases_for_failure_scenarios = [
7979 # File key with no '.'
80- (VALID_FLU_EMIS_FILE_KEY .replace ("." , "" ), key_format_error_message ),
81- # File key with additional '.'
82- (VALID_FLU_EMIS_FILE_KEY [:2 ] + "." + VALID_FLU_EMIS_FILE_KEY [2 :], key_format_error_message ),
83- # File key with additional '_'
84- (VALID_FLU_EMIS_FILE_KEY [:2 ] + "_" + VALID_FLU_EMIS_FILE_KEY [2 :], key_format_error_message ),
80+ (VALID_FLU_EMIS_FILE_KEY .replace ("." , "" ), "Initial file validation failed: missing file extension" ),
81+ # File key with additional '.' in vaccine type
82+ (VALID_FLU_EMIS_FILE_KEY [:2 ] + "." + VALID_FLU_EMIS_FILE_KEY [2 :],"Initial file validation failed: invalid vaccine type" ),
83+ # File key with additional '_' in vaccine type
84+ (VALID_FLU_EMIS_FILE_KEY [:2 ] + "_" + VALID_FLU_EMIS_FILE_KEY [2 :],"Initial file validation failed: invalid vaccine type" ),
8585 # File key with missing '_'
86- (VALID_FLU_EMIS_FILE_KEY .replace ("_" , "" , 1 ), key_format_error_message ),
86+ (VALID_FLU_EMIS_FILE_KEY .replace ("_" , "" , 1 ), "Initial file validation failed: not enough parts in file key" ),
8787 # File key with missing '_'
88- (VALID_FLU_EMIS_FILE_KEY .replace ("_" , "" ), key_format_error_message ),
88+ (VALID_FLU_EMIS_FILE_KEY .replace ("_" , "" ), "Initial file validation failed: not enough parts in file key" ),
8989 # File key with missing extension
90- (VALID_FLU_EMIS_FILE_KEY .replace (".csv" , "" ), key_format_error_message ),
90+ (VALID_FLU_EMIS_FILE_KEY .replace (".csv" , "" ), "Initial file validation failed: missing file extension" ),
9191 # File key with invalid vaccine type
92- (VALID_FLU_EMIS_FILE_KEY .replace ("FLU" , "Flue" ), invalid_file_key_error_message ),
92+ (VALID_FLU_EMIS_FILE_KEY .replace ("FLU" , "Flue" ), "Initial file validation failed: invalid vaccine type" ),
9393 # File key with missing vaccine type
94- (VALID_FLU_EMIS_FILE_KEY .replace ("FLU" , "" ), invalid_file_key_error_message ),
94+ (VALID_FLU_EMIS_FILE_KEY .replace ("FLU" , "" ), "Initial file validation failed: invalid vaccine type" ),
9595 # File key with invalid vaccinations element
96- (VALID_FLU_EMIS_FILE_KEY .replace ("Vaccinations" , "Vaccination" ), invalid_file_key_error_message ),
96+ (VALID_FLU_EMIS_FILE_KEY .replace ("Vaccinations" , "Vaccination" ),"Initial file validation failed: file key must contain VACCINATIONS" ),
9797 # File key with missing vaccinations element
98- (VALID_FLU_EMIS_FILE_KEY .replace ("Vaccinations" , "" ), invalid_file_key_error_message ),
98+ (VALID_FLU_EMIS_FILE_KEY .replace ("Vaccinations" , "" ), "Initial file validation failed: file key must contain VACCINATIONS" ),
9999 # File key with invalid version
100- (VALID_FLU_EMIS_FILE_KEY .replace ("v5" , "v4" ), invalid_file_key_error_message ),
100+ (VALID_FLU_EMIS_FILE_KEY .replace ("v5" , "v4" ), "Initial file validation failed: invalid file version" ),
101101 # File key with missing version
102- (VALID_FLU_EMIS_FILE_KEY .replace ("v5" , "" ), invalid_file_key_error_message ),
102+ (VALID_FLU_EMIS_FILE_KEY .replace ("v5" , "" ), "Initial file validation failed: invalid file version" ),
103103 # File key with invalid ODS code
104- (VALID_FLU_EMIS_FILE_KEY .replace ("YGM41" , "YGAM" ), invalid_file_key_error_message ),
104+ (VALID_FLU_EMIS_FILE_KEY .replace ("YGM41" , "YGAM" ), "Initial file validation failed: invalid supplier ODS code" ),
105105 # File key with missing ODS code
106- (VALID_FLU_EMIS_FILE_KEY .replace ("YGM41" , "" ), invalid_file_key_error_message ),
106+ (VALID_FLU_EMIS_FILE_KEY .replace ("YGM41" , "" ), "Initial file validation failed: invalid supplier ODS code" ),
107107 # File key with invalid timestamp
108- (VALID_FLU_EMIS_FILE_KEY .replace ("20000101T00000001" , "20200132T12345600" ), invalid_file_key_error_message ),
108+ (VALID_FLU_EMIS_FILE_KEY .replace ("20000101T00000001" , "20200132T12345600" ),"Initial file validation failed: invalid timestamp" ),
109109 # File key with missing timestamp
110- (VALID_FLU_EMIS_FILE_KEY .replace ("20000101T00000001" , "" ), invalid_file_key_error_message ),
110+ (VALID_FLU_EMIS_FILE_KEY .replace ("20000101T00000001" , "" ),"Initial file validation failed: invalid timestamp" ),
111111 # File key with incorrect extension
112- (VALID_FLU_EMIS_FILE_KEY .replace (".csv" , ".xlsx" ), invalid_file_key_error_message ),
112+ (VALID_FLU_EMIS_FILE_KEY .replace (".csv" , ".xlsx" ), "Initial file validation failed: unsupported file extension" ),
113113 ]
114114
115115 for file_key , expected_result in test_cases_for_failure_scenarios :
0 commit comments