@@ -173,6 +173,36 @@ def test_load_settings_invalid_hooks_settings(project):
173
173
mock_open .assert_called_once_with ("r" , encoding = "utf-8" )
174
174
175
175
176
+ def test_load_settings_invalid_protocol_version (project ):
177
+ with patch_settings (
178
+ project , '{"settings": {"protocolVersion": "3.0.0"}}'
179
+ ) as mock_open :
180
+ with pytest .raises (InvalidProjectError ):
181
+ project .load_settings ()
182
+ mock_open .assert_called_once_with ("r" , encoding = "utf-8" )
183
+
184
+
185
+ def test_load_settings_missing_protocol_version (project ):
186
+ plugin = object ()
187
+ data = json .dumps (
188
+ {"artifact_type" : "MODULE" , "typeName" : MODULE_TYPE_NAME , "settings" : {}}
189
+ )
190
+ patch_load = patch (
191
+ "rpdk.core.project.load_plugin" , autospec = True , return_value = plugin
192
+ )
193
+
194
+ with patch_settings (project , data ) as mock_open , patch_load as mock_load :
195
+ project .load_settings ()
196
+ mock_open .assert_called_once_with ("r" , encoding = "utf-8" )
197
+ mock_load .assert_not_called ()
198
+ assert project .type_info == ("AWS" , "Color" , "Red" , "MODULE" )
199
+ assert project .type_name == MODULE_TYPE_NAME
200
+ assert project .language is None
201
+ assert project .artifact_type == ARTIFACT_TYPE_MODULE
202
+ assert project ._plugin is None
203
+ assert project .settings == {}
204
+
205
+
176
206
def test_load_settings_valid_json_for_resource (project ):
177
207
plugin = object ()
178
208
data = json .dumps (
@@ -292,6 +322,57 @@ def test_load_settings_valid_json_for_hook(project):
292
322
assert project .settings == {}
293
323
294
324
325
+ def test_load_settings_valid_protocol_version (project ):
326
+ plugin = object ()
327
+ data = json .dumps (
328
+ {
329
+ "artifact_type" : "MODULE" ,
330
+ "typeName" : MODULE_TYPE_NAME ,
331
+ "settings" : {"protocolVersion" : "2.0.0" },
332
+ }
333
+ )
334
+ patch_load = patch (
335
+ "rpdk.core.project.load_plugin" , autospec = True , return_value = plugin
336
+ )
337
+
338
+ with patch_settings (project , data ) as mock_open , patch_load as mock_load :
339
+ project .load_settings ()
340
+
341
+ mock_open .assert_called_once_with ("r" , encoding = "utf-8" )
342
+ mock_load .assert_not_called ()
343
+ assert project .type_info == ("AWS" , "Color" , "Red" , "MODULE" )
344
+ assert project .type_name == MODULE_TYPE_NAME
345
+ assert project .language is None
346
+ assert project .artifact_type == ARTIFACT_TYPE_MODULE
347
+ assert project ._plugin is None
348
+ assert project .settings == {"protocolVersion" : "2.0.0" }
349
+
350
+
351
+ def test_load_settings_missing_settings (project ):
352
+ plugin = object ()
353
+ data = json .dumps (
354
+ {
355
+ "artifact_type" : "MODULE" ,
356
+ "typeName" : MODULE_TYPE_NAME ,
357
+ }
358
+ )
359
+ patch_load = patch (
360
+ "rpdk.core.project.load_plugin" , autospec = True , return_value = plugin
361
+ )
362
+
363
+ with patch_settings (project , data ) as mock_open , patch_load as mock_load :
364
+ project .load_settings ()
365
+
366
+ mock_open .assert_called_once_with ("r" , encoding = "utf-8" )
367
+ mock_load .assert_not_called ()
368
+ assert project .type_info == ("AWS" , "Color" , "Red" , "MODULE" )
369
+ assert project .type_name == MODULE_TYPE_NAME
370
+ assert project .language is None
371
+ assert project .artifact_type == ARTIFACT_TYPE_MODULE
372
+ assert project ._plugin is None
373
+ assert project .settings == {}
374
+
375
+
295
376
def test_load_schema_settings_not_loaded (project ):
296
377
with pytest .raises (InternalError ):
297
378
project .load_schema ()
0 commit comments