|
9 | 9 | from unittest.mock import ANY, Mock, patch |
10 | 10 |
|
11 | 11 | import fakeredis |
12 | | -from boto3 import client as boto3_client |
13 | | -from moto import mock_dynamodb, mock_firehose, mock_s3, mock_sqs |
| 12 | +from moto import mock_aws |
14 | 13 |
|
15 | 14 | from utils_for_tests.mock_environment_variables import ( |
16 | 15 | MOCK_ENVIRONMENT_DICT, |
|
22 | 21 | GenericSetUp, |
23 | 22 | GenericTearDown, |
24 | 23 | assert_audit_table_entry, |
| 24 | + create_boto3_clients, |
25 | 25 | create_mock_hget, |
26 | 26 | ) |
27 | 27 | from utils_for_tests.values_for_tests import ( |
|
34 | 34 |
|
35 | 35 | # Ensure environment variables are mocked before importing from src files |
36 | 36 | with patch.dict("os.environ", MOCK_ENVIRONMENT_DICT): |
37 | | - from common.clients import REGION_NAME |
38 | 37 | from common.models.batch_constants import AUDIT_TABLE_NAME, AuditTableKeys, FileStatus |
39 | 38 | from constants import EXTENDED_ATTRIBUTES_VACC_TYPE |
40 | 39 | from file_name_processor import handle_record, lambda_handler |
41 | 40 |
|
42 | | -s3_client = boto3_client("s3", region_name=REGION_NAME) |
43 | | -sqs_client = boto3_client("sqs", region_name=REGION_NAME) |
44 | | -firehose_client = boto3_client("firehose", region_name=REGION_NAME) |
45 | | -dynamodb_client = boto3_client("dynamodb", region_name=REGION_NAME) |
| 41 | +s3_client = None |
| 42 | +sqs_client = None |
| 43 | +firehose_client = None |
| 44 | +dynamodb_client = None |
46 | 45 |
|
47 | 46 | # NOTE: The default throughout these tests is to use permissions config which allows all suppliers full permissions |
48 | 47 | # for all vaccine types. This default is overridden for some specific tests. |
|
52 | 51 |
|
53 | 52 |
|
54 | 53 | @patch.dict("os.environ", MOCK_ENVIRONMENT_DICT) |
55 | | -@mock_s3 |
56 | | -@mock_sqs |
57 | | -@mock_firehose |
58 | | -@mock_dynamodb |
| 54 | +@mock_aws |
59 | 55 | class TestLambdaHandlerDataSource(TestCase): |
60 | 56 | """Tests for lambda_handler when a data sources (vaccine data) file is received.""" |
61 | 57 |
|
@@ -87,6 +83,10 @@ def run(self, result=None): |
87 | 83 | super().run(result) |
88 | 84 |
|
89 | 85 | def setUp(self): |
| 86 | + global s3_client, sqs_client, firehose_client, dynamodb_client |
| 87 | + s3_client, sqs_client, firehose_client, dynamodb_client = create_boto3_clients( |
| 88 | + "s3", "sqs", "firehose", "dynamodb" |
| 89 | + ) |
90 | 90 | GenericSetUp(s3_client, firehose_client, sqs_client, dynamodb_client) |
91 | 91 | self.logger_patcher = patch("file_name_processor.logger") |
92 | 92 | self.mock_logger = self.logger_patcher.start() |
@@ -483,7 +483,9 @@ def test_lambda_handler_extended_attributes_extension_checks(self, mock_get_redi |
483 | 483 | s3_client.put_object(Bucket=BucketNames.SOURCE, Key=bad_ext_key, Body=MOCK_EXTENDED_ATTRIBUTES_FILE_CONTENT) |
484 | 484 | with patch("file_name_processor.uuid4", return_value="EA_bad_ext_id"): |
485 | 485 | lambda_handler(self.make_event([self.make_record(bad_ext_key)]), None) |
486 | | - item = self.get_audit_table_items()[-1] |
| 486 | + item = next( |
| 487 | + item for item in self.get_audit_table_items() if item[AuditTableKeys.MESSAGE_ID]["S"] == "EA_bad_ext_id" |
| 488 | + ) |
487 | 489 | self.assertEqual(item[AuditTableKeys.STATUS]["S"], "Failed") |
488 | 490 | s3_client.get_object(Bucket=BucketNames.SOURCE, Key=f"extended-attributes-archive/{bad_ext_key}") |
489 | 491 | """ |
@@ -673,14 +675,15 @@ def test_lambda_adds_event_to_audit_table_as_failed_when_unexpected_exception_is |
673 | 675 |
|
674 | 676 |
|
675 | 677 | @patch.dict("os.environ", MOCK_ENVIRONMENT_DICT) |
676 | | -@mock_s3 |
677 | | -@mock_dynamodb |
678 | | -@mock_sqs |
679 | | -@mock_firehose |
| 678 | +@mock_aws |
680 | 679 | class TestUnexpectedBucket(TestCase): |
681 | 680 | """Tests for lambda_handler when an unexpected bucket name is used""" |
682 | 681 |
|
683 | 682 | def setUp(self): |
| 683 | + global s3_client, sqs_client, firehose_client, dynamodb_client |
| 684 | + s3_client, sqs_client, firehose_client, dynamodb_client = create_boto3_clients( |
| 685 | + "s3", "sqs", "firehose", "dynamodb" |
| 686 | + ) |
684 | 687 | GenericSetUp(s3_client, firehose_client, sqs_client, dynamodb_client) |
685 | 688 |
|
686 | 689 | def tearDown(self): |
|
0 commit comments