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