Skip to content

Commit 612a5d5

Browse files
committed
Fix addProp and flatening
1 parent ca27867 commit 612a5d5

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

msrest/serialization.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1022,7 +1022,8 @@ def _build_additional_properties(self, attribute_map, data):
10221022
if "additional_properties" in attribute_map and attribute_map.get("additional_properties", {}).get("key") != '':
10231023
# Check empty string. If it's not empty, someone has a real "additionalProperties"
10241024
return None
1025-
known_json_keys = {desc['key'] for desc in attribute_map.values() if desc['key'] != ''}
1025+
known_json_keys = {_decode_attribute_map_key(_FLATTEN.split(desc['key'])[0])
1026+
for desc in attribute_map.values() if desc['key'] != ''}
10261027
present_json_keys = set(data.keys())
10271028
missing_keys = present_json_keys - known_json_keys
10281029
return {key: data[key] for key in missing_keys}

tests/test_serialization.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2076,6 +2076,36 @@ def __init__(self, name=None):
20762076
self.assertEquals(m.additional_properties['PropArray'], [1,2,3])
20772077
self.assertEquals(m.additional_properties['PropDict'], {"a": "b"})
20782078

2079+
def test_additional_properties_flattening(self):
2080+
2081+
class AdditionalTest(Model):
2082+
2083+
_attribute_map = {
2084+
"name": {"key":"Name", "type":"str"},
2085+
"content" :{"key":"Properties.Content", "type":"str"}
2086+
}
2087+
2088+
def __init__(self, name=None, content=None):
2089+
super(AdditionalTest, self).__init__()
2090+
self.name = name
2091+
self.content = content
2092+
2093+
message = {
2094+
"Name": "test",
2095+
"Properties": {
2096+
"Content": "Content",
2097+
"Unknown": "Unknown"
2098+
}
2099+
}
2100+
2101+
d = Deserializer({'AdditionalTest': AdditionalTest})
2102+
2103+
m = d('AdditionalTest', message)
2104+
2105+
self.assertEquals(m.name, "test")
2106+
self.assertEquals(m.content, "Content")
2107+
self.assertEquals(m.additional_properties, {})
2108+
20792109

20802110
class TestModelInstanceEquality(unittest.TestCase):
20812111

0 commit comments

Comments
 (0)