@@ -270,6 +270,12 @@ def test_lambda_handler_extended_attributes_success(self, mock_get_redis_client)
270270 mock_redis .hkeys = Mock (return_value = ["COVID" , * all_vaccine_types_in_this_test_file ])
271271 mock_get_redis_client .return_value = mock_redis
272272
273+ # Ensure DPS destination bucket exists in moto so copy succeeds
274+ try :
275+ s3_client .create_bucket (Bucket = BucketNames .DPS_DESTINATION )
276+ except Exception :
277+ pass
278+
273279 # Patch uuid4 (message id), and prevent external copy issues by simulating move
274280 with (
275281 patch ("file_name_processor.validate_permissions_for_extended_attributes_files" , return_value = "X8E5B_COVID" ),
@@ -288,10 +294,15 @@ def test_lambda_handler_extended_attributes_success(self, mock_get_redis_client)
288294 self .assertEqual (item [AuditTableKeys .STATUS ]["S" ], "Processed" )
289295 self .assertEqual (item [AuditTableKeys .TIMESTAMP ]["S" ], test_cases [0 ].created_at_formatted_string )
290296 self .assertEqual (item [AuditTableKeys .EXPIRES_AT ]["N" ], str (test_cases [0 ].expires_at ))
291- # File should be moved to destination/
292- dest_key = f"dps_destination/{ test_cases [0 ].file_key } "
293- retrieved = s3_client .get_object (Bucket = BucketNames .DESTINATION , Key = dest_key )
294- self .assertIsNotNone (retrieved )
297+ # File should be moved to source extended-attributes-archive/<file_key>
298+ archived_key = f"extended-attributes-archive/{ test_cases [0 ].file_key } "
299+ archived_obj = s3_client .get_object (Bucket = BucketNames .SOURCE , Key = archived_key )
300+ self .assertIsNotNone (archived_obj )
301+
302+ # Also verify file copied to DPS destination bucket under dps_destination/<file_key>
303+ dps_key = f"dps_destination/{ test_cases [0 ].file_key } "
304+ copied_obj = s3_client .get_object (Bucket = BucketNames .DPS_DESTINATION , Key = dps_key )
305+ self .assertIsNotNone (copied_obj )
295306
296307 # No SQS and no ack file
297308 self .assert_no_sqs_message ()
@@ -443,6 +454,12 @@ def test_lambda_handler_extended_attributes_extension_checks(self, mock_get_redi
443454 # .CSV accepted
444455 csv_key = MockFileDetails .extended_attributes_file .file_key
445456 s3_client .put_object (Bucket = BucketNames .SOURCE , Key = csv_key , Body = MOCK_EXTENDED_ATTRIBUTES_FILE_CONTENT )
457+ # Ensure DPS destination bucket exists so copy can succeed
458+ try :
459+ s3_client .create_bucket (Bucket = BucketNames .DPS_DESTINATION )
460+ except Exception :
461+ pass
462+
446463 with (
447464 patch ("file_name_processor.validate_permissions_for_extended_attributes_files" , return_value = "X8E5B_COVID" ),
448465 # Ensure EA DAT case passes permission validation by returning CUDS for X8E5B
@@ -453,8 +470,11 @@ def test_lambda_handler_extended_attributes_extension_checks(self, mock_get_redi
453470 patch ("file_name_processor.uuid4" , return_value = "EA_csv_id" ),
454471 ):
455472 lambda_handler (self .make_event ([self .make_record (csv_key )]), None )
456- # Ensure processed path hit by checking destination (implementation currently uses single slash)
457- s3_client .get_object (Bucket = BucketNames .DESTINATION , Key = f"dps_destination/{ csv_key } " )
473+
474+ # Ensure processed path hit by checking archive move in source bucket
475+ s3_client .get_object (Bucket = BucketNames .SOURCE , Key = f"extended-attributes-archive/{ csv_key } " )
476+ # And verify copy to DPS destination
477+ s3_client .get_object (Bucket = BucketNames .DPS_DESTINATION , Key = f"dps_destination/{ csv_key } " )
458478
459479 # .DAT accepted
460480 dat_key = MockFileDetails .extended_attributes_file .file_key [:- 3 ] + "dat"
@@ -464,7 +484,8 @@ def test_lambda_handler_extended_attributes_extension_checks(self, mock_get_redi
464484 patch ("file_name_processor.uuid4" , return_value = "EA_dat_id" ),
465485 ):
466486 lambda_handler (self .make_event ([self .make_record (dat_key )]), None )
467- s3_client .get_object (Bucket = BucketNames .DESTINATION , Key = f"dps_destination/{ dat_key } " )
487+ s3_client .get_object (Bucket = BucketNames .SOURCE , Key = f"extended-attributes-archive/{ dat_key } " )
488+ s3_client .get_object (Bucket = BucketNames .DPS_DESTINATION , Key = f"dps_destination/{ dat_key } " )
468489
469490 # Invalid extension fails
470491 bad_ext_key = csv_key [:- 3 ] + "txt"
0 commit comments