From 33c0b6c41495ca3f819e0252edb513644d0c0089 Mon Sep 17 00:00:00 2001 From: Kobus Date: Tue, 17 Dec 2024 10:25:45 +0100 Subject: [PATCH 1/2] Update json_parse_node.py Fixes numerical strings accidentally getting parsed to date --- .../json/kiota_serialization_json/json_parse_node.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 e147e94..ade7e73 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -312,7 +312,8 @@ def try_get_anything(self, value: Any) -> Any: try: if self.__is_four_digit_number(value): return value - + if value.isdigit(): + return value datetime_obj = pendulum.parse(value) if isinstance(datetime_obj, pendulum.Duration): return datetime_obj.as_timedelta() From 9d8d1afd54eb24353c546473506b602591b29754 Mon Sep 17 00:00:00 2001 From: Kobus Date: Tue, 17 Dec 2024 14:24:10 +0100 Subject: [PATCH 2/2] Update test_json_parse_node.py --- .../json/tests/unit/test_json_parse_node.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 8436464..965bc8a 100644 --- a/packages/serialization/json/tests/unit/test_json_parse_node.py +++ b/packages/serialization/json/tests/unit/test_json_parse_node.py @@ -139,6 +139,25 @@ def test_get_anythin_does_not_convert_numeric_chars_to_datetime(): assert result == "1212" +def test_get_anythin_does_not_convert_any_length_numeric_chars_to_datetime(): + parse_node = JsonParseNode("1212") + result1 = parse_node.try_get_anything("1212") + parse_node_two = JsonParseNode("-PT15M") + result2 = parse_node_two.try_get_anything("-PT15M") + parse_node_three = JsonParseNode("20081008") + result3 = parse_node_three.try_get_anything("20081008") + parse_node_four = JsonParseNode("1011317") + result4 = parse_node_four.try_get_anything("1011317") + assert isinstance(result1, str) + assert result1 == "1212" + assert isinstance(result2, str) + assert result2 == "-PT15M" + assert isinstance(result3, str) + assert result3 == "20081008" + assert isinstance(result4, str) + assert result4 == "1011317" + + def test_get_anythin_does_convert_date_string_to_datetime(): parse_node = JsonParseNode("2023-10-05T14:48:00.000Z") result = parse_node.try_get_anything("2023-10-05T14:48:00.000Z")