@@ -173,6 +173,36 @@ def test_load_settings_invalid_hooks_settings(project):
173173 mock_open .assert_called_once_with ("r" , encoding = "utf-8" )
174174
175175
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+
176206def test_load_settings_valid_json_for_resource (project ):
177207 plugin = object ()
178208 data = json .dumps (
@@ -292,6 +322,57 @@ def test_load_settings_valid_json_for_hook(project):
292322 assert project .settings == {}
293323
294324
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+
295376def test_load_schema_settings_not_loaded (project ):
296377 with pytest .raises (InternalError ):
297378 project .load_schema ()
0 commit comments