4545 "previousSystemTags" : {},
4646 "stackTags" : {"tag1" : "abc" },
4747 "previousStackTags" : {"tag1" : "def" },
48+ "typeConfiguration" : sentinel .type_configuration ,
4849 },
4950 "stackId" : "arn:aws:cloudformation:us-east-1:123456789012:stack/SampleStack/e"
5051 "722ae60-fe62-11e8-9a0e-0ae8cc519968" ,
@@ -76,7 +77,7 @@ def test_entrypoint_handler_error(resource):
7677
7778
7879def test_entrypoint_success ():
79- resource = Resource (TYPE_NAME , Mock ())
80+ resource = Resource (TYPE_NAME , Mock (), Mock () )
8081 event = ProgressEvent (status = OperationStatus .SUCCESS , message = "" )
8182 mock_handler = resource .handler (Action .CREATE )(Mock (return_value = event ))
8283
@@ -106,7 +107,15 @@ class ResourceModel(BaseModel):
106107 def _deserialize (cls , json_data ):
107108 return cls ("test" )
108109
109- resource = Resource (Mock (), ResourceModel )
110+ @dataclass
111+ class TypeConfigurationModel (BaseModel ):
112+ a_string : str
113+
114+ @classmethod
115+ def _deserialize (cls , json_data ):
116+ return cls ("test" )
117+
118+ resource = Resource (Mock (), ResourceModel , TypeConfigurationModel )
110119
111120 with patch (
112121 "cloudformation_cli_python_lib.resource.ProviderLogHandler.setup"
@@ -132,7 +141,7 @@ def _deserialize(cls, json_data):
132141def test_entrypoint_non_mutating_action ():
133142 payload = ENTRYPOINT_PAYLOAD .copy ()
134143 payload ["action" ] = "READ"
135- resource = Resource (TYPE_NAME , Mock ())
144+ resource = Resource (TYPE_NAME , Mock (), Mock () )
136145 event = ProgressEvent (status = OperationStatus .SUCCESS , message = "" )
137146 resource .handler (Action .CREATE )(Mock (return_value = event ))
138147
@@ -148,7 +157,7 @@ def test_entrypoint_non_mutating_action():
148157def test_entrypoint_with_context ():
149158 payload = ENTRYPOINT_PAYLOAD .copy ()
150159 payload ["callbackContext" ] = {"a" : "b" }
151- resource = Resource (TYPE_NAME , Mock ())
160+ resource = Resource (TYPE_NAME , Mock (), Mock () )
152161 event = ProgressEvent (
153162 status = OperationStatus .SUCCESS , message = "" , callbackContext = {"c" : "d" }
154163 )
@@ -163,7 +172,7 @@ def test_entrypoint_with_context():
163172
164173
165174def test_entrypoint_success_without_caller_provider_creds ():
166- resource = Resource (TYPE_NAME , Mock ())
175+ resource = Resource (TYPE_NAME , Mock (), Mock () )
167176 event = ProgressEvent (status = OperationStatus .SUCCESS , message = "" )
168177 resource .handler (Action .CREATE )(Mock (return_value = event ))
169178
@@ -208,7 +217,12 @@ def test__parse_request_valid_request_and__cast_resource_request():
208217 mock_model = Mock (spec_set = ["_deserialize" ])
209218 mock_model ._deserialize .side_effect = [sentinel .state_out1 , sentinel .state_out2 ]
210219
211- resource = Resource (TYPE_NAME , mock_model )
220+ mock_type_configuration_model = Mock (spec_set = ["_deserialize" ])
221+ mock_type_configuration_model ._deserialize .side_effect = [
222+ sentinel .type_configuration
223+ ]
224+
225+ resource = Resource (TYPE_NAME , mock_model , mock_type_configuration_model )
212226
213227 with patch (
214228 "cloudformation_cli_python_lib.resource._get_boto_session"
@@ -229,6 +243,7 @@ def test__parse_request_valid_request_and__cast_resource_request():
229243 # credentials are used when rescheduling, so can't zero them out (for now)
230244 assert request .requestData .callerCredentials is not None
231245 assert request .requestData .providerCredentials is not None
246+ assert request .requestData .typeConfiguration is sentinel .type_configuration
232247
233248 caller_sess , provider_sess = sessions
234249 assert caller_sess is mock_session .return_value
@@ -245,6 +260,7 @@ def test__parse_request_valid_request_and__cast_resource_request():
245260 assert modeled_request .clientRequestToken == request .bearerToken
246261 assert modeled_request .desiredResourceState is sentinel .state_out1
247262 assert modeled_request .previousResourceState is sentinel .state_out2
263+ assert modeled_request .typeConfiguration is sentinel .type_configuration
248264 assert modeled_request .logicalResourceIdentifier == "myBucket"
249265 assert modeled_request .nextToken is None
250266
@@ -337,6 +353,11 @@ def test__parse_test_request_valid_request():
337353 mock_model = Mock (spec_set = ["_deserialize" ])
338354 mock_model ._deserialize .side_effect = [sentinel .state_out1 , sentinel .state_out2 ]
339355
356+ mock_type_configuration_model = Mock (spec_set = ["_deserialize" ])
357+ mock_type_configuration_model ._deserialize .side_effect = [
358+ sentinel .type_configuration
359+ ]
360+
340361 payload = {
341362 "credentials" : {"accessKeyId" : "" , "secretAccessKey" : "" , "sessionToken" : "" },
342363 "action" : "CREATE" ,
@@ -345,11 +366,12 @@ def test__parse_test_request_valid_request():
345366 "desiredResourceState" : sentinel .state_in1 ,
346367 "previousResourceState" : sentinel .state_in2 ,
347368 "logicalResourceIdentifier" : None ,
369+ "typeConfiguration" : sentinel .type_configuration ,
348370 },
349371 "callbackContext" : None ,
350372 }
351373
352- resource = Resource (TYPE_NAME , mock_model )
374+ resource = Resource (TYPE_NAME , mock_model , mock_type_configuration_model )
353375
354376 with patch (
355377 "cloudformation_cli_python_lib.resource._get_boto_session"
@@ -366,6 +388,7 @@ def test__parse_test_request_valid_request():
366388 )
367389 assert request .desiredResourceState is sentinel .state_out1
368390 assert request .previousResourceState is sentinel .state_out2
391+ assert request .typeConfiguration is sentinel .type_configuration
369392 assert request .logicalResourceIdentifier is None
370393
371394 assert action == Action .CREATE
@@ -394,7 +417,10 @@ def test_test_entrypoint_success():
394417 mock_model = Mock (spec_set = ["_deserialize" ])
395418 mock_model ._deserialize .side_effect = [None , None ]
396419
397- resource = Resource (TYPE_NAME , mock_model )
420+ mock_type_configuration_model = Mock (spec_set = ["_deserialize" ])
421+ mock_type_configuration_model ._deserialize .side_effect = [None ]
422+
423+ resource = Resource (TYPE_NAME , mock_model , mock_type_configuration_model )
398424 progress_event = ProgressEvent (status = OperationStatus .SUCCESS )
399425 mock_handler = resource .handler (Action .CREATE )(Mock (return_value = progress_event ))
400426
@@ -415,4 +441,5 @@ def test_test_entrypoint_success():
415441 assert event is progress_event
416442
417443 mock_model ._deserialize .assert_has_calls ([call (None ), call (None )])
444+ mock_type_configuration_model ._deserialize .assert_has_calls ([call (None )])
418445 mock_handler .assert_called_once ()
0 commit comments