diff --git a/packages/serialization/json/kiota_serialization_json/json_parse_node.py b/packages/serialization/json/kiota_serialization_json/json_parse_node.py index c8a01669..898b6d02 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -1,5 +1,6 @@ from __future__ import annotations +import base64 import json import re import warnings @@ -290,15 +291,9 @@ def _get_time_value(value: Any) -> Optional[time]: @staticmethod def _get_bytes_value(value: Any) -> Optional[bytes]: - # if the node is a string, we need to decode it - # This ensures that the string is properly converted to bytes if isinstance(value, str): - base64_string = value - else: - base64_string = json.dumps(value) - if not base64_string: - return None - return base64_string.encode("utf-8") + return base64.b64decode(value) + return None @property def on_before_assign_field_values(self) -> Optional[Callable[[Parsable], None]]: diff --git a/packages/serialization/json/tests/unit/test_json_parse_node.py b/packages/serialization/json/tests/unit/test_json_parse_node.py index 18ac2c9c..0b09ddc0 100644 --- a/packages/serialization/json/tests/unit/test_json_parse_node.py +++ b/packages/serialization/json/tests/unit/test_json_parse_node.py @@ -120,14 +120,19 @@ def test_get_collection_of_primitive_values_no_type(): def test_get_bytes_value(): parse_node = JsonParseNode("U2Ftd2VsIGlzIHRoZSBiZXN0") result = parse_node.get_bytes_value() - assert isinstance(result, bytes) - assert result.decode("utf-8") == "U2Ftd2VsIGlzIHRoZSBiZXN0" + assert result == b"Samwel is the best" -def test_get_bytes_json_compatible(): +def test_get_bytes_value_empty_string(): + parse_node = JsonParseNode("") + result = parse_node.get_bytes_value() + assert result == b"" + + +def test_get_bytes_value_non_string_returns_none(): parse_node = JsonParseNode({"test": 1}) result = parse_node.get_bytes_value() - assert json.loads(result.decode("utf-8")) == {"test": 1} + assert result is None def test_get_collection_of_enum_values():