diff --git a/module/Rest/test-api/Action/ListShortUrlsTest.php b/module/Rest/test-api/Action/ListShortUrlsTest.php index 60b493d6..34aaa802 100644 --- a/module/Rest/test-api/Action/ListShortUrlsTest.php +++ b/module/Rest/test-api/Action/ListShortUrlsTest.php @@ -153,8 +153,11 @@ class ListShortUrlsTest extends ApiTestCase ]; #[Test, DataProvider('provideFilteredLists')] - public function shortUrlsAreProperlyListed(array $query, array $expectedShortUrls, string $apiKey): void - { + public function shortUrlsAreProperlyListed( + array $query, + array $expectedShortUrls, + string $apiKey = 'valid_api_key', + ): void { $resp = $this->callApiWithKey(self::METHOD_GET, '/short-urls', [RequestOptions::QUERY => $query], $apiKey); $respPayload = $this->getJsonResponsePayload($resp); @@ -176,21 +179,21 @@ class ListShortUrlsTest extends ApiTestCase self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, self::SHORT_URL_SHLINK_WITH_TITLE, self::SHORT_URL_DOCS, - ], 'valid_api_key']; + ]]; yield [['excludePastValidUntil' => 'true'], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_CUSTOM_SLUG, self::SHORT_URL_META, self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['excludeMaxVisitsReached' => 'true'], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_CUSTOM_SLUG, self::SHORT_URL_META, self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, self::SHORT_URL_DOCS, - ], 'valid_api_key']; + ]]; yield [['orderBy' => 'shortCode'], [ self::SHORT_URL_SHLINK_WITH_TITLE, self::SHORT_URL_CUSTOM_SLUG, @@ -198,7 +201,7 @@ class ListShortUrlsTest extends ApiTestCase self::SHORT_URL_META, self::SHORT_URL_DOCS, self::SHORT_URL_CUSTOM_DOMAIN, - ], 'valid_api_key']; + ]]; yield [['orderBy' => 'shortCode-DESC'], [ self::SHORT_URL_DOCS, self::SHORT_URL_CUSTOM_DOMAIN, @@ -206,7 +209,7 @@ class ListShortUrlsTest extends ApiTestCase self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, self::SHORT_URL_CUSTOM_SLUG, self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['orderBy' => 'title-DESC'], [ self::SHORT_URL_SHLINK_WITH_TITLE, self::SHORT_URL_META, @@ -214,66 +217,87 @@ class ListShortUrlsTest extends ApiTestCase self::SHORT_URL_DOCS, self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, - ], 'valid_api_key']; + ]]; yield [['startDate' => Chronos::parse('2018-12-01')->toAtomString()], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_CUSTOM_SLUG, self::SHORT_URL_META, - ], 'valid_api_key']; + ]]; yield [['endDate' => Chronos::parse('2018-12-01')->toAtomString()], [ self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, self::SHORT_URL_SHLINK_WITH_TITLE, self::SHORT_URL_DOCS, - ], 'valid_api_key']; + ]]; yield [['tags' => ['foo']], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_META, self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['tags' => ['bar']], [ self::SHORT_URL_META, - ], 'valid_api_key']; + ]]; yield [['tags' => ['foo', 'bar']], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_META, self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['tags' => ['foo', 'bar'], 'tagsMode' => 'any'], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_META, self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['tags' => ['foo', 'bar'], 'tagsMode' => 'all'], [ self::SHORT_URL_META, - ], 'valid_api_key']; + ]]; yield [['tags' => ['foo', 'bar', 'baz']], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_META, self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; - yield [['tags' => ['foo', 'bar', 'baz'], 'tagsMode' => 'all'], [], 'valid_api_key']; + ]]; + yield [['tags' => ['foo', 'bar', 'baz'], 'tagsMode' => 'all'], []]; yield [['tags' => ['foo'], 'endDate' => Chronos::parse('2018-12-01')->toAtomString()], [ self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['searchTerm' => 'alejandro'], [ self::SHORT_URL_CUSTOM_DOMAIN, self::SHORT_URL_META, - ], 'valid_api_key']; + ]]; yield [['searchTerm' => 'cool'], [ self::SHORT_URL_SHLINK_WITH_TITLE, - ], 'valid_api_key']; + ]]; yield [['searchTerm' => 'example.com'], [ self::SHORT_URL_CUSTOM_DOMAIN, - ], 'valid_api_key']; + ]]; yield [['domain' => 'example.com'], [ self::SHORT_URL_CUSTOM_DOMAIN, - ], 'valid_api_key']; + ]]; yield [['domain' => Domain::DEFAULT_AUTHORITY], [ self::SHORT_URL_CUSTOM_SLUG, self::SHORT_URL_META, self::SHORT_URL_SHLINK_WITH_TITLE, self::SHORT_URL_DOCS, - ], 'valid_api_key']; + ]]; + + // Exclude tags + yield [['excludeTags' => ['foo']], [ + self::SHORT_URL_CUSTOM_SLUG, + self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, + self::SHORT_URL_DOCS, + ]]; + yield [['excludeTags' => ['foo', 'bar']], [ + self::SHORT_URL_CUSTOM_SLUG, + self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, + self::SHORT_URL_DOCS, + ]]; + yield [['excludeTags' => ['bar', 'foo'], 'excludeTagsMode' => 'all'], [ + self::SHORT_URL_CUSTOM_DOMAIN, + self::SHORT_URL_CUSTOM_SLUG, + self::SHORT_URL_CUSTOM_SLUG_AND_DOMAIN, + self::SHORT_URL_SHLINK_WITH_TITLE, + self::SHORT_URL_DOCS, + ]]; + + // Different API keys yield [[], [ self::SHORT_URL_CUSTOM_SLUG, self::SHORT_URL_META,