Skip to content

Commit beb5de7

Browse files
committed
Unit test coverage
1 parent af0bdf0 commit beb5de7

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

filenameprocessor/tests/test_lambda_handler.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,30 @@ def setUp(self):
466466
def tearDown(self):
467467
GenericTearDown(s3_client, firehose_client, sqs_client, dynamodb_client)
468468

469+
def test_elasticcache_failure_handled(self):
470+
event = {
471+
"s3": {
472+
"bucket": {"name": "my-config-bucket"}, # triggers 'config' branch
473+
"object": {"key": "testfile.csv"}
474+
}
475+
}
476+
477+
with patch("file_name_processor.upload_to_elasticache", side_effect=Exception("Upload failed")), \
478+
patch("file_name_processor.logger") as mock_logger:
479+
480+
result = handle_record(event)
481+
482+
self.assertEqual(result["statusCode"], 500)
483+
self.assertEqual(result["message"], "Failed to upload file content to cache")
484+
self.assertEqual(result["file_key"], "testfile.csv")
485+
self.assertIn("error", result)
486+
self.assertEqual(result["vaccine_type"], "unknown")
487+
self.assertEqual(result["supplier"], "unknown")
488+
489+
mock_logger.error.assert_called_once()
490+
logged_msg = mock_logger.error.call_args[0][0]
491+
self.assertIn("Error uploading to cache", logged_msg)
492+
469493
def test_successful_processing_from_configs(self):
470494
"""Tests that the permissions config file content is uploaded to elasticache successfully"""
471495
fake_redis = fakeredis.FakeStrictRedis()
@@ -538,7 +562,46 @@ def test_successful_processing_from_configs(self):
538562
self.assertEqual(result, expected_result)
539563

540564

565+
@patch.dict("os.environ", MOCK_ENVIRONMENT_DICT)
566+
@mock_s3
567+
@mock_dynamodb
568+
@mock_sqs
569+
@mock_firehose
570+
class TestUnexpectedBucket(TestCase):
571+
"""Tests for lambda_handler when an unexpected bucket name is used"""
572+
573+
def setUp(self):
574+
GenericSetUp(s3_client, firehose_client, sqs_client, dynamodb_client)
575+
576+
def tearDown(self):
577+
GenericTearDown(s3_client, firehose_client, sqs_client, dynamodb_client)
578+
579+
def test_unexpected_bucket_name(self):
580+
record = {
581+
"s3": {
582+
"bucket": {"name": "unknown-bucket"},
583+
"object": {"key": "somefile.csv"}
584+
}
585+
}
586+
587+
with patch("file_name_processor.logger") as mock_logger:
588+
result = handle_record(record)
589+
590+
self.assertEqual(result["statusCode"], 500)
591+
self.assertIn("unexpected bucket name", result["message"])
592+
self.assertEqual(result["file_key"], "somefile.csv")
593+
self.assertEqual(result["vaccine_type"], "unknown")
594+
self.assertEqual(result["supplier"], "unknown")
595+
596+
mock_logger.error.assert_called_once()
597+
args = mock_logger.error.call_args[0]
598+
self.assertIn("Unable to process file", args[0])
599+
self.assertIn("somefile.csv", args)
600+
self.assertIn("unknown-bucket", args)
601+
602+
541603
class TestMainEntryPoint(TestCase):
604+
542605
def test_run_local_constructs_event_and_calls_lambda_handler(self):
543606
test_args = [
544607
"file_name_processor.py",

0 commit comments

Comments
 (0)