@@ -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