@@ -975,6 +975,33 @@ def test_apply_artifact_mappings_to_template_integration(self):
975975 code_uri = body ["${Name}Service" ]["Properties" ]["CodeUri" ]
976976 self .assertEqual (code_uri , {"Fn::FindInMap" : ["SAMCodeUriServices" , {"Ref" : "Name" }, "CodeUri" ]})
977977
978+ def test_get_prop_value_flat_key (self ):
979+ from samcli .lib .package .language_extensions_packaging import _get_prop_value
980+ self .assertEqual (_get_prop_value ({"CodeUri" : "s3://b/k" }, "CodeUri" ), "s3://b/k" )
981+
982+ def test_get_prop_value_dotted_key (self ):
983+ from samcli .lib .package .language_extensions_packaging import _get_prop_value
984+ props = {"Command" : {"ScriptLocation" : "s3://b/k.py" }}
985+ self .assertEqual (_get_prop_value (props , "Command.ScriptLocation" ), "s3://b/k.py" )
986+
987+ def test_get_prop_value_missing_returns_none (self ):
988+ from samcli .lib .package .language_extensions_packaging import _get_prop_value
989+ self .assertIsNone (_get_prop_value ({"CodeUri" : "x" }, "Command.ScriptLocation" ))
990+
991+ def test_set_prop_value_flat_key (self ):
992+ from samcli .lib .package .language_extensions_packaging import _set_prop_value
993+ props = {"CodeUri" : "./src" }
994+ _set_prop_value (props , "CodeUri" , "s3://b/k" )
995+ self .assertEqual (props ["CodeUri" ], "s3://b/k" )
996+
997+ def test_set_prop_value_dotted_key_creates_intermediate (self ):
998+ from samcli .lib .package .language_extensions_packaging import _set_prop_value
999+ props = {"Command" : {"Name" : "glueetl" }}
1000+ _set_prop_value (props , "Command.ScriptLocation" , "s3://b/k.py" )
1001+ self .assertEqual (props ["Command" ]["ScriptLocation" ], "s3://b/k.py" )
1002+ # Existing keys preserved
1003+ self .assertEqual (props ["Command" ]["Name" ], "glueetl" )
1004+
9781005
9791006class TestPackageContextMappingsIntegration (TestCase ):
9801007 """Test cases for the complete Mappings transformation integration in _export()"""
0 commit comments