From ff75b3cd1f1ea972e6e81c58bbbb4bcb27fab97b Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 9 Jan 2022 11:28:32 +0100 Subject: [PATCH] Enhanced test covering list short URLs with invalid params --- .../Core/src/Exception/ValidationException.php | 3 +++ .../Rest/test-api/Action/ListShortUrlsTest.php | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/module/Core/src/Exception/ValidationException.php b/module/Core/src/Exception/ValidationException.php index 3a211592..326eec11 100644 --- a/module/Core/src/Exception/ValidationException.php +++ b/module/Core/src/Exception/ValidationException.php @@ -42,6 +42,9 @@ class ValidationException extends InvalidArgumentException implements ProblemDet $e->invalidElements = $invalidData; $e->additional = ['invalidElements' => array_keys($invalidData)]; + // TODO Expose reasons for the validation to fail + // $e->additional = ['invalidElements' => array_keys($invalidData), 'reasons' => $invalidData]; + return $e; } diff --git a/module/Rest/test-api/Action/ListShortUrlsTest.php b/module/Rest/test-api/Action/ListShortUrlsTest.php index e53c0c11..b28a0b5d 100644 --- a/module/Rest/test-api/Action/ListShortUrlsTest.php +++ b/module/Rest/test-api/Action/ListShortUrlsTest.php @@ -242,20 +242,29 @@ class ListShortUrlsTest extends ApiTestCase ]; } - /** @test */ - public function errorIsReturnedWhenProvidingInvalidValues(): void + /** + * @test + * @dataProvider provideInvalidFiltering + */ + public function errorIsReturnedWhenProvidingInvalidValues(array $query, array $expectedInvalidElements): void { - $query = ['tagsMode' => 'invalid']; $resp = $this->callApiWithKey(self::METHOD_GET, '/short-urls', [RequestOptions::QUERY => $query]); $respPayload = $this->getJsonResponsePayload($resp); self::assertEquals(400, $resp->getStatusCode()); self::assertEquals([ - 'invalidElements' => ['tagsMode'], + 'invalidElements' => $expectedInvalidElements, 'title' => 'Invalid data', 'type' => 'INVALID_ARGUMENT', 'status' => 400, 'detail' => 'Provided data is not valid', ], $respPayload); } + + public function provideInvalidFiltering(): iterable + { + yield [['tagsMode' => 'invalid'], ['tagsMode']]; + yield [['orderBy' => 'invalid'], ['orderBy']]; + yield [['orderBy' => 'invalid', 'tagsMode' => 'invalid'], ['tagsMode', 'orderBy']]; + } }