From bdad6e3ce01530ffe324bd57cf609aaf742612c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Wed, 8 Feb 2023 10:34:05 +0100 Subject: [PATCH 1/3] IBX-5044: Fixed DateMetadata criterion failure in XML REST API --- src/lib/Server/Input/Parser/Criterion/DateMetadata.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib/Server/Input/Parser/Criterion/DateMetadata.php b/src/lib/Server/Input/Parser/Criterion/DateMetadata.php index c44d3a11..d8398a5b 100644 --- a/src/lib/Server/Input/Parser/Criterion/DateMetadata.php +++ b/src/lib/Server/Input/Parser/Criterion/DateMetadata.php @@ -37,7 +37,7 @@ class DateMetadata extends BaseParser public function parse(array $data, ParsingDispatcher $parsingDispatcher): DateMetadataCriterion { if (!isset($data['DateMetadataCriterion'])) { - throw new Exceptions\Parser('Invalid format'); + throw new Exceptions\Parser('Invalid format'); } $dateMetadata = $data['DateMetadataCriterion']; @@ -56,6 +56,14 @@ public function parse(array $data, ParsingDispatcher $parsingDispatcher): DateMe throw new Exceptions\Parser('Invalid format'); } + if ( + is_string($dateMetadata['Value']) + && is_numeric($dateMetadata['Value']) + && ((int)$dateMetadata['Value'] == $dateMetadata['Value']) + ) { + $dateMetadata['Value'] = (int)$dateMetadata['Value']; + } + if (!in_array(gettype($dateMetadata['Value']), ['integer', 'array'], true)) { throw new Exceptions\Parser('Invalid format'); } From 840abb54ae36c7558c03f03064aadd3fc0f07548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Wed, 8 Feb 2023 11:07:27 +0100 Subject: [PATCH 2/3] IBX-5044: Fixed DateMetadata criterion failure in XML REST API --- tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php b/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php index 2b77db0c..06d043d4 100644 --- a/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php +++ b/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php @@ -68,7 +68,7 @@ public function testParse(array $data, DateMetadataCriterion $expected): void public function testParseExceptionOnInvalidCriterionFormat(): void { - $this->expectExceptionMessage('Invalid format'); + $this->expectExceptionMessage('Invalid format'); $this->expectException(Exceptions\Parser::class); $inputArray = [ 'foo' => 'Michael learns to mock', From c14a8fb2072236f23b2b2265196a8c09a5cf99a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Wed, 8 Feb 2023 11:47:58 +0100 Subject: [PATCH 3/3] IBX-5044: Fixed DateMetadata criterion failure in XML REST API --- tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php b/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php index 06d043d4..9f3cf367 100644 --- a/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php +++ b/tests/lib/Server/Input/Parser/Criterion/DateMetadataTest.php @@ -33,6 +33,10 @@ public function testParseProvider(): iterable ['DateMetadataCriterion' => ['Target' => 'created', 'Value' => 14, 'Operator' => 'EQ']], new DateMetadataCriterion('created', Operator::EQ, 14), ], + [ + ['DateMetadataCriterion' => ['Target' => 'created', 'Value' => '14', 'Operator' => 'EQ']], + new DateMetadataCriterion('created', Operator::EQ, 14), + ], [ ['DateMetadataCriterion' => ['Target' => 'created', 'Value' => 1620739489, 'Operator' => 'LT']], new DateMetadataCriterion('created', Operator::LT, 1620739489),