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