Skip to content

Commit 1016858

Browse files
committed
fix tests + fix linter
1 parent 7bd46e1 commit 1016858

File tree

4 files changed

+56
-19
lines changed

4 files changed

+56
-19
lines changed

samtranslator/model/sam_resources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,7 @@ def _construct_inline_code(*args: Any, **kwargs: Dict[str, Any]) -> Dict[str, An
887887
dispatch_function: Callable[..., Dict[str, Any]] = artifact_dispatch[filtered_key]
888888
return dispatch_function(artifacts[filtered_key], self.logical_id, filtered_key)
889889

890-
def _construct_version(
890+
def _construct_version( # noqa: PLR0912
891891
self,
892892
function: LambdaFunction,
893893
intrinsics_resolver: IntrinsicsResolver,

tests/model/test_sam_resources.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class TestArchitecture(TestCase):
2424
"intrinsics_resolver": IntrinsicsResolver({}),
2525
"event_resources": [],
2626
"managed_policy_map": {"foo": "bar"},
27+
"resource_resolver": ResourceResolver({}),
2728
}
2829

2930
@patch("boto3.session.Session.region_name", "ap-southeast-1")
@@ -60,6 +61,7 @@ class TestCodeUriandImageUri(TestCase):
6061
"intrinsics_resolver": IntrinsicsResolver({}),
6162
"event_resources": [],
6263
"managed_policy_map": {"foo": "bar"},
64+
"resource_resolver": ResourceResolver({}),
6365
}
6466

6567
@patch("boto3.session.Session.region_name", "ap-southeast-1")
@@ -143,6 +145,7 @@ class TestAssumeRolePolicyDocument(TestCase):
143145
"intrinsics_resolver": IntrinsicsResolver({}),
144146
"event_resources": [],
145147
"managed_policy_map": {"foo": "bar"},
148+
"resource_resolver": ResourceResolver({}),
146149
}
147150

148151
@patch("boto3.session.Session.region_name", "ap-southeast-1")
@@ -193,6 +196,7 @@ class TestVersionDescription(TestCase):
193196
"intrinsics_resolver": IntrinsicsResolver({}),
194197
"event_resources": [],
195198
"managed_policy_map": {"foo": "bar"},
199+
"resource_resolver": ResourceResolver({}),
196200
}
197201

198202
@patch("boto3.session.Session.region_name", "ap-southeast-1")
@@ -441,6 +445,7 @@ class TestFunctionUrlConfig(TestCase):
441445
"intrinsics_resolver": IntrinsicsResolver({}),
442446
"event_resources": [],
443447
"managed_policy_map": {"foo": "bar"},
448+
"resource_resolver": ResourceResolver({}),
444449
}
445450

446451
@patch("boto3.session.Session.region_name", "ap-southeast-1")

tests/translator/output/error_globals_unsupported_type.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
"Number of errors found: 1. ",
55
"'Globals' section is invalid. ",
66
"'NewType' is not supported. ",
7-
"Must be one of the following values - ['Api', 'Function', 'HttpApi', 'SimpleTable', 'StateMachine']"
7+
"Must be one of the following values - ['Api', 'Function', 'HttpApi', 'LayerVersion', 'SimpleTable', 'StateMachine']"
88
],
9-
"errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 1. 'Globals' section is invalid. 'NewType' is not supported. Must be one of the following values - ['Api', 'Function', 'HttpApi', 'SimpleTable', 'StateMachine']",
9+
"errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 1. 'Globals' section is invalid. 'NewType' is not supported. Must be one of the following values - ['Api', 'Function', 'HttpApi', 'LayerVersion', 'SimpleTable', 'StateMachine']",
1010
"errors": [
1111
{
12-
"errorMessage": "'Globals' section is invalid. 'NewType' is not supported. Must be one of the following values - ['Api', 'Function', 'HttpApi', 'SimpleTable', 'StateMachine']"
12+
"errorMessage": "'Globals' section is invalid. 'NewType' is not supported. Must be one of the following values - ['Api', 'Function', 'HttpApi', 'LayerVersion', 'SimpleTable', 'StateMachine']"
1313
}
1414
]
1515
}

tests/translator/test_function_resources.py

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ def setUp(self):
1515
self.intrinsics_resolver_mock.resolve = Mock()
1616
self.mappings_resolver_mock = Mock()
1717
self.mappings_resolver_mock.resolve = Mock()
18+
self.resource_resolver_mock = Mock()
19+
self.resource_resolver_mock.resolve = Mock()
1820

1921
self.code_uri = "s3://bucket/key?versionId=version"
2022
self.func_dict = {
@@ -44,6 +46,7 @@ def test_sam_function_with_code_signer(self):
4446
kwargs["managed_policy_map"] = {"a": "b"}
4547
kwargs["event_resources"] = []
4648
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
49+
kwargs["resource_resolver"] = self.resource_resolver_mock
4750
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = {
4851
"S3Bucket": "bucket",
4952
"S3Key": "key",
@@ -76,6 +79,7 @@ def test_sam_function_with_alias(self, get_resolved_alias_name_mock):
7679
kwargs["managed_policy_map"] = {"a": "b"}
7780
kwargs["event_resources"] = []
7881
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
82+
kwargs["resource_resolver"] = self.resource_resolver_mock
7983
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = {
8084
"S3Bucket": "bucket",
8185
"S3Key": "key",
@@ -131,6 +135,7 @@ def test_sam_function_with_deployment_preference(self, get_resolved_alias_name_m
131135
kwargs["event_resources"] = []
132136
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
133137
kwargs["mappings_resolver"] = self.mappings_resolver_mock
138+
kwargs["resource_resolver"] = self.resource_resolver_mock
134139
deployment_preference_collection = self._make_deployment_preference_collection()
135140
kwargs["deployment_preference_collection"] = deployment_preference_collection
136141
get_resolved_alias_name_mock.return_value = alias_name
@@ -176,6 +181,7 @@ def test_sam_function_with_deployment_preference_missing_collection_raises_error
176181
kwargs["event_resources"] = []
177182
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
178183
kwargs["mappings_resolver"] = self.mappings_resolver_mock
184+
kwargs["resource_resolver"] = self.resource_resolver_mock
179185
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = {
180186
"S3Bucket": "bucket",
181187
"S3Key": "key",
@@ -212,6 +218,7 @@ def test_sam_function_with_disabled_deployment_preference_does_not_add_update_po
212218
kwargs["event_resources"] = []
213219
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
214220
kwargs["mappings_resolver"] = self.mappings_resolver_mock
221+
kwargs["resource_resolver"] = self.resource_resolver_mock
215222
preference_collection = self._make_deployment_preference_collection()
216223
preference_collection.get.return_value = DeploymentPreference.from_dict(
217224
sam_func.logical_id, deploy_preference_dict
@@ -248,6 +255,7 @@ def test_sam_function_cannot_be_with_deployment_preference_without_alias(self):
248255
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
249256
kwargs["mappings_resolver"] = self.mappings_resolver_mock
250257
kwargs["deployment_preference_collection"] = self._make_deployment_preference_collection()
258+
kwargs["resource_resolver"] = self.resource_resolver_mock
251259
sam_func.to_cloudformation(**kwargs)
252260

253261
@patch("boto3.session.Session.region_name", "ap-southeast-1")
@@ -271,6 +279,7 @@ def test_sam_function_without_alias_allows_disabled_deployment_preference(self):
271279
kwargs["event_resources"] = []
272280
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
273281
kwargs["mappings_resolver"] = self.mappings_resolver_mock
282+
kwargs["resource_resolver"] = self.resource_resolver_mock
274283

275284
preference_collection = self._make_deployment_preference_collection()
276285
preference_collection.get.return_value = DeploymentPreference.from_dict(
@@ -311,6 +320,7 @@ def test_sam_function_with_deployment_preference_intrinsic_ref_enabled_boolean_p
311320
kwargs["event_resources"] = []
312321
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
313322
kwargs["mappings_resolver"] = self.mappings_resolver_mock
323+
kwargs["resource_resolver"] = self.resource_resolver_mock
314324
deployment_preference_collection = self._make_deployment_preference_collection()
315325
kwargs["deployment_preference_collection"] = deployment_preference_collection
316326
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = True
@@ -355,6 +365,7 @@ def test_sam_function_with_deployment_preference_intrinsic_ref_enabled_dict_para
355365
kwargs["event_resources"] = []
356366
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
357367
kwargs["mappings_resolver"] = self.mappings_resolver_mock
368+
kwargs["resource_resolver"] = self.resource_resolver_mock
358369
deployment_preference_collection = self._make_deployment_preference_collection()
359370
kwargs["deployment_preference_collection"] = deployment_preference_collection
360371
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = {"MyEnabledFlag": True}
@@ -389,6 +400,7 @@ def test_sam_function_with_deployment_preference_intrinsic_findinmap_enabled_dic
389400
kwargs["event_resources"] = []
390401
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
391402
kwargs["mappings_resolver"] = self.mappings_resolver_mock
403+
kwargs["resource_resolver"] = self.resource_resolver_mock
392404
deployment_preference_collection = self._make_deployment_preference_collection()
393405
kwargs["deployment_preference_collection"] = deployment_preference_collection
394406
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = {"MyEnabledFlag": True}
@@ -424,6 +436,7 @@ def test_sam_function_with_deployment_preference_passthrough_condition_through_p
424436
kwargs["event_resources"] = []
425437
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
426438
kwargs["mappings_resolver"] = self.mappings_resolver_mock
439+
kwargs["resource_resolver"] = self.resource_resolver_mock
427440
deployment_preference_collection = self._make_deployment_preference_collection()
428441
kwargs["deployment_preference_collection"] = deployment_preference_collection
429442
get_resolved_alias_name_mock.return_value = alias_name
@@ -472,6 +485,7 @@ def test_sam_function_with_deployment_preference_passthrough_condition_through_f
472485
kwargs["event_resources"] = []
473486
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
474487
kwargs["mappings_resolver"] = self.mappings_resolver_mock
488+
kwargs["resource_resolver"] = self.resource_resolver_mock
475489
deployment_preference_collection = self._make_deployment_preference_collection()
476490
kwargs["deployment_preference_collection"] = deployment_preference_collection
477491
get_resolved_alias_name_mock.return_value = alias_name
@@ -531,6 +545,7 @@ def test_sam_function_with_deployment_preference_passthrough_condition_invalid_i
531545
kwargs["event_resources"] = []
532546
kwargs["intrinsics_resolver"] = self.intrinsics_resolver_mock
533547
kwargs["mappings_resolver"] = self.mappings_resolver_mock
548+
kwargs["resource_resolver"] = self.resource_resolver_mock
534549
deployment_preference_collection = self._make_deployment_preference_collection()
535550
kwargs["deployment_preference_collection"] = deployment_preference_collection
536551
get_resolved_alias_name_mock.return_value = alias_name
@@ -560,7 +575,9 @@ def test_version_creation(self, LogicalIdGeneratorMock):
560575
generator_mock.gen.return_value = id_val
561576

562577
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
563-
version = self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
578+
version = self.sam_func._construct_version(
579+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
580+
)
564581

565582
self.assertEqual(version.logical_id, id_val)
566583
self.assertEqual(version.Description, None)
@@ -582,7 +599,9 @@ def test_version_creation_with_code_sha(self, LogicalIdGeneratorMock):
582599

583600
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
584601
self.sam_func.AutoPublishCodeSha256 = hash_code
585-
version = self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock, hash_code)
602+
version = self.sam_func._construct_version(
603+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock, hash_code
604+
)
586605

587606
self.assertEqual(version.logical_id, id_val)
588607
self.assertEqual(version.Description, None)
@@ -603,7 +622,9 @@ def test_version_creation_without_s3_object_version(self, LogicalIdGeneratorMock
603622

604623
del self.lambda_func.Code["S3ObjectVersion"]
605624
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
606-
version = self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
625+
version = self.sam_func._construct_version(
626+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
627+
)
607628

608629
self.assertEqual(version.logical_id, id_val)
609630

@@ -616,7 +637,9 @@ def test_version_creation_error(self):
616637
# Empty code dictionary
617638
self.lambda_func.Code = {}
618639
with self.assertRaises(ValueError):
619-
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
640+
self.sam_func._construct_version(
641+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
642+
)
620643

621644
@patch("samtranslator.translator.logical_id_generator.LogicalIdGenerator")
622645
def test_version_creation_intrinsic_function_in_code_s3key(self, LogicalIdGeneratorMock):
@@ -628,7 +651,9 @@ def test_version_creation_intrinsic_function_in_code_s3key(self, LogicalIdGenera
628651
self.lambda_func.Code = {"S3Bucket": "bucket", "S3Key": {"Ref": "keyparameter"}, "S3ObjectVersion": "version"}
629652
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
630653

631-
version = self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
654+
version = self.sam_func._construct_version(
655+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
656+
)
632657
self.assertEqual(version.logical_id, id_val)
633658

634659
expected_prefix = self.sam_func.logical_id + "Version"
@@ -644,7 +669,9 @@ def test_version_creation_intrinsic_function_in_code_s3bucket(self, LogicalIdGen
644669
self.lambda_func.Code = {"S3Bucket": {"Ref": "bucketparameter"}, "S3Key": "key", "S3ObjectVersion": "version"}
645670
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
646671

647-
version = self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
672+
version = self.sam_func._construct_version(
673+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
674+
)
648675
self.assertEqual(version.logical_id, id_val)
649676

650677
expected_prefix = self.sam_func.logical_id + "Version"
@@ -660,7 +687,9 @@ def test_version_creation_intrinsic_function_in_code_s3version(self, LogicalIdGe
660687
self.lambda_func.Code = {"S3Bucket": "bucket", "S3Key": "key", "S3ObjectVersion": {"Ref": "versionparameter"}}
661688
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
662689

663-
version = self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
690+
version = self.sam_func._construct_version(
691+
self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
692+
)
664693
self.assertEqual(version.logical_id, id_val)
665694

666695
expected_prefix = self.sam_func.logical_id + "Version"
@@ -676,7 +705,7 @@ def test_version_logical_id_changes(self, LogicalIdGeneratorMock):
676705

677706
# Test that logicalId changes with changes to CodeSha
678707
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
679-
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
708+
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock)
680709

681710
LogicalIdGeneratorMock.assert_called_once_with(prefix, self.lambda_func.Code, None)
682711
self.intrinsics_resolver_mock.resolve_parameter_refs.assert_called_with(self.lambda_func.Code)
@@ -685,7 +714,7 @@ def test_version_logical_id_changes(self, LogicalIdGeneratorMock):
685714
self.lambda_func.Code["S3ObjectVersion"] = "new object version"
686715
new_code = self.lambda_func.Code.copy()
687716
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = new_code
688-
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
717+
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock)
689718
LogicalIdGeneratorMock.assert_called_with(prefix, new_code, None)
690719
self.intrinsics_resolver_mock.resolve_parameter_refs.assert_called_with(new_code)
691720

@@ -699,15 +728,15 @@ def test_version_logical_id_changes_with_intrinsic_functions(self, LogicalIdGene
699728
self.lambda_func.Code = {"S3Bucket": "bucket", "S3Key": {"Ref": "someparam"}}
700729

701730
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = self.lambda_func.Code
702-
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
731+
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock)
703732

704733
LogicalIdGeneratorMock.assert_called_once_with(prefix, self.lambda_func.Code, None)
705734
self.intrinsics_resolver_mock.resolve_parameter_refs.assert_called_with(self.lambda_func.Code)
706735

707736
# Now, just let the intrinsics resolver return a different value. Let's make sure the new value gets wired up properly
708737
new_code = {"S3Bucket": "bucket", "S3Key": "some new value"}
709738
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = new_code
710-
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock)
739+
self.sam_func._construct_version(self.lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock)
711740
LogicalIdGeneratorMock.assert_called_with(prefix, new_code, None)
712741
self.intrinsics_resolver_mock.resolve_parameter_refs.assert_called_with(self.lambda_func.Code)
713742

@@ -723,11 +752,14 @@ def test_version_logical_id_changes_with_snapstart(self):
723752

724753
self.intrinsics_resolver_mock.resolve_parameter_refs.return_value = lambda_func.Code
725754

726-
version1 = self.sam_func._construct_version(lambda_func, self.intrinsics_resolver_mock)
727-
version_snapstart = self.sam_func._construct_version(lambda_func_snapstart, self.intrinsics_resolver_mock)
755+
version1 = self.sam_func._construct_version(
756+
lambda_func, self.intrinsics_resolver_mock, self.resource_resolver_mock
757+
)
758+
version_snapstart = self.sam_func._construct_version(
759+
lambda_func_snapstart, self.intrinsics_resolver_mock, self.resource_resolver_mock
760+
)
728761
version_snapstart_none = self.sam_func._construct_version(
729-
lambda_func_snapstart_none,
730-
self.intrinsics_resolver_mock,
762+
lambda_func_snapstart_none, self.intrinsics_resolver_mock, self.resource_resolver_mock
731763
)
732764
# SnapStart config changes the hash, except when ApplyOn is "None"
733765
self.assertNotEqual(version1.logical_id, version_snapstart.logical_id)

0 commit comments

Comments
 (0)