From 354c2d828a4a76ce542582e12aff06d38a253f6c Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 9 Dec 2021 20:53:29 +0100 Subject: [PATCH] Simplify json testing --- tests/src/Module/Api/ApiTest.php | 22 ++++++++++++++++++- .../Module/Api/Friendica/NotificationTest.php | 3 ++- .../Module/Api/Friendica/Photo/DeleteTest.php | 6 +---- .../Api/Friendica/Photoalbum/DeleteTest.php | 6 +---- .../Api/Friendica/Photoalbum/UpdateTest.php | 6 +---- .../Api/GnuSocial/GnuSocial/ConfigTest.php | 7 +----- .../Module/Api/GnuSocial/Help/TestTest.php | 4 +++- .../Accounts/VerifyCredentialsTest.php | 6 +---- .../Twitter/Account/RateLimitStatusTest.php | 2 +- .../Api/Twitter/Account/UpdateProfileTest.php | 6 +---- .../Module/Api/Twitter/Blocks/ListsTest.php | 6 +---- .../Api/Twitter/Followers/ListsTest.php | 6 +---- .../Module/Api/Twitter/Friends/ListsTest.php | 6 +---- .../Api/Twitter/Friendships/IncomingTest.php | 6 +---- .../Module/Api/Twitter/Lists/StatusesTest.php | 6 +---- .../Module/Api/Twitter/Media/UploadTest.php | 11 +++++----- .../Module/Api/Twitter/SavedSearchesTest.php | 2 +- 17 files changed, 45 insertions(+), 66 deletions(-) diff --git a/tests/src/Module/Api/ApiTest.php b/tests/src/Module/Api/ApiTest.php index 154f54a1cf..9d690b1af3 100644 --- a/tests/src/Module/Api/ApiTest.php +++ b/tests/src/Module/Api/ApiTest.php @@ -22,6 +22,7 @@ namespace Friendica\Test\src\Module\Api; use Friendica\App; +use Friendica\Capabilities\ICanCreateResponses; use Friendica\Core\Addon; use Friendica\Core\Hook; use Friendica\Database\Database; @@ -32,6 +33,7 @@ use Friendica\Test\FixtureTest; use Friendica\Test\Util\AppDouble; use Friendica\Test\Util\AuthenticationDouble; use Friendica\Test\Util\AuthTestConfig; +use Psr\Http\Message\ResponseInterface; abstract class ApiTest extends FixtureTest { @@ -50,6 +52,24 @@ abstract class ApiTest extends FixtureTest // We could probably do more checks here. } + /** + * Transforms a response into a JSON class + * + * @param ResponseInterface $response + * + * @return mixed + */ + protected function toJson(ResponseInterface $response) + { + self::assertEquals(ICanCreateResponses::TYPE_JSON, $response->getHeaderLine(ICanCreateResponses::X_HEADER)); + + $body = (string)$response->getBody(); + + self::assertJson($body); + + return json_decode($body); + } + protected function setUp(): void { parent::setUp(); // TODO: Change the autogenerated stub @@ -63,7 +83,7 @@ abstract class ApiTest extends FixtureTest DI::app()->setIsLoggedIn(true); AuthTestConfig::$authenticated = true; - AuthTestConfig::$user_id = 42; + AuthTestConfig::$user_id = 42; $this->installAuthTest(); } diff --git a/tests/src/Module/Api/Friendica/NotificationTest.php b/tests/src/Module/Api/Friendica/NotificationTest.php index b5e2a41665..c9ab001418 100644 --- a/tests/src/Module/Api/Friendica/NotificationTest.php +++ b/tests/src/Module/Api/Friendica/NotificationTest.php @@ -78,7 +78,8 @@ XML; $notification = new Notification(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']); $response = $notification->run(); - self::assertJson($response->getBody()); + $this->toJson($response); + self::assertEquals(['Content-type' => ['application/json'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders()); } } diff --git a/tests/src/Module/Api/Friendica/Photo/DeleteTest.php b/tests/src/Module/Api/Friendica/Photo/DeleteTest.php index 8c49456b36..05808d56c4 100644 --- a/tests/src/Module/Api/Friendica/Photo/DeleteTest.php +++ b/tests/src/Module/Api/Friendica/Photo/DeleteTest.php @@ -53,11 +53,7 @@ class DeleteTest extends ApiTest $delete = new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]); $response = $delete->run(['photo_id' => '709057080661a283a6aa598501504178']); - $responseText = (string)$response->getBody(); - - self::assertJson($responseText); - - $json = json_decode($responseText); + $json = $this->toJson($response); self::assertEquals('deleted', $json->result); self::assertEquals('photo with id `709057080661a283a6aa598501504178` has been deleted from server.', $json->message); diff --git a/tests/src/Module/Api/Friendica/Photoalbum/DeleteTest.php b/tests/src/Module/Api/Friendica/Photoalbum/DeleteTest.php index 88355483a3..230ba70c89 100644 --- a/tests/src/Module/Api/Friendica/Photoalbum/DeleteTest.php +++ b/tests/src/Module/Api/Friendica/Photoalbum/DeleteTest.php @@ -49,11 +49,7 @@ class DeleteTest extends ApiTest $delete = new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]); $response = $delete->run(['album' => 'test_album']); - $responseText = (string)$response->getBody(); - - self::assertJson($responseText); - - $json = json_decode($responseText); + $json = $this->toJson($response); self::assertEquals('deleted', $json->result); self::assertEquals('album `test_album` with all containing photos has been deleted.', $json->message); diff --git a/tests/src/Module/Api/Friendica/Photoalbum/UpdateTest.php b/tests/src/Module/Api/Friendica/Photoalbum/UpdateTest.php index 22ca155cbb..fa4638e370 100644 --- a/tests/src/Module/Api/Friendica/Photoalbum/UpdateTest.php +++ b/tests/src/Module/Api/Friendica/Photoalbum/UpdateTest.php @@ -58,11 +58,7 @@ class UpdateTest extends ApiTest $response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run(['album' => 'test_album', 'album_new' => 'test_album_2']); - $responseBody = (string)$response->getBody(); - - self::assertJson($responseBody); - - $json = json_decode($responseBody); + $json = $this->toJson($response); self::assertEquals('updated', $json->result); self::assertEquals('album `test_album` with all containing photos has been renamed to `test_album_2`.', $json->message); diff --git a/tests/src/Module/Api/GnuSocial/GnuSocial/ConfigTest.php b/tests/src/Module/Api/GnuSocial/GnuSocial/ConfigTest.php index 3cc1df2961..b1874d8386 100644 --- a/tests/src/Module/Api/GnuSocial/GnuSocial/ConfigTest.php +++ b/tests/src/Module/Api/GnuSocial/GnuSocial/ConfigTest.php @@ -19,13 +19,8 @@ class ConfigTest extends ApiTest $config = new Config(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $config->run(); - $body = (string)$response->getBody(); - self::assertJson($body); - - $json = json_decode($body); - - self::assertEquals(1, 1); + $json = $this->toJson($response); self::assertEquals('localhost', $json->site->server); self::assertEquals('frio', $json->site->theme); diff --git a/tests/src/Module/Api/GnuSocial/Help/TestTest.php b/tests/src/Module/Api/GnuSocial/Help/TestTest.php index 5aa4286812..858c9b6cdc 100644 --- a/tests/src/Module/Api/GnuSocial/Help/TestTest.php +++ b/tests/src/Module/Api/GnuSocial/Help/TestTest.php @@ -14,8 +14,10 @@ class TestTest extends ApiTest $test = new Test(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']); $response = $test->run(); + $json = $this->toJson($response); + self::assertEquals(['Content-type' => ['application/json'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders()); - self::assertEquals('"ok"', $response->getBody()); + self::assertEquals('ok', $json); } public function testXml() diff --git a/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php b/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php index 5170f1cb2f..51d76696f6 100644 --- a/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php +++ b/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php @@ -19,11 +19,7 @@ class VerifyCredentialsTest extends ApiTest $verifyCredentials = new VerifyCredentials(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $verifyCredentials->run(); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); self::assertEquals(48, $json->id); self::assertIsArray($json->emojis); diff --git a/tests/src/Module/Api/Twitter/Account/RateLimitStatusTest.php b/tests/src/Module/Api/Twitter/Account/RateLimitStatusTest.php index 1368990d08..a76b5d87e0 100644 --- a/tests/src/Module/Api/Twitter/Account/RateLimitStatusTest.php +++ b/tests/src/Module/Api/Twitter/Account/RateLimitStatusTest.php @@ -15,7 +15,7 @@ class RateLimitStatusTest extends ApiTest $rateLimitStatus = new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET], ['extension' => 'json']); $response = $rateLimitStatus->run(); - $result = json_decode($response->getBody()); + $result = $this->toJson($response); self::assertEquals(['Content-type' => ['application/json'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders()); self::assertEquals(150, $result->remaining_hits); diff --git a/tests/src/Module/Api/Twitter/Account/UpdateProfileTest.php b/tests/src/Module/Api/Twitter/Account/UpdateProfileTest.php index 4ce3420d26..e06e8d4848 100644 --- a/tests/src/Module/Api/Twitter/Account/UpdateProfileTest.php +++ b/tests/src/Module/Api/Twitter/Account/UpdateProfileTest.php @@ -17,11 +17,7 @@ class UpdateProfileTest extends ApiTest $updateProfile = new UpdateProfile(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST], ['extension' => 'json']); $response = $updateProfile->run(['name' => 'new_name', 'description' => 'new_description']); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); self::assertEquals('new_name', $json->name); self::assertEquals('new_description', $json->description); diff --git a/tests/src/Module/Api/Twitter/Blocks/ListsTest.php b/tests/src/Module/Api/Twitter/Blocks/ListsTest.php index 4f63581a70..a37b59f036 100644 --- a/tests/src/Module/Api/Twitter/Blocks/ListsTest.php +++ b/tests/src/Module/Api/Twitter/Blocks/ListsTest.php @@ -17,11 +17,7 @@ class ListsTest extends ApiTest $lists = new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $lists->run(); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); self::assertIsArray($json->users); } diff --git a/tests/src/Module/Api/Twitter/Followers/ListsTest.php b/tests/src/Module/Api/Twitter/Followers/ListsTest.php index c1e053e5a1..7ea3863eaf 100644 --- a/tests/src/Module/Api/Twitter/Followers/ListsTest.php +++ b/tests/src/Module/Api/Twitter/Followers/ListsTest.php @@ -17,11 +17,7 @@ class ListsTest extends ApiTest $lists = new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $lists->run(); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); self::assertIsArray($json->users); } diff --git a/tests/src/Module/Api/Twitter/Friends/ListsTest.php b/tests/src/Module/Api/Twitter/Friends/ListsTest.php index 363f8d73c3..7cb5bd10a7 100644 --- a/tests/src/Module/Api/Twitter/Friends/ListsTest.php +++ b/tests/src/Module/Api/Twitter/Friends/ListsTest.php @@ -19,11 +19,7 @@ class ListsTest extends ApiTest $lists = new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $lists->run(); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); self::assertIsArray($json->users); } diff --git a/tests/src/Module/Api/Twitter/Friendships/IncomingTest.php b/tests/src/Module/Api/Twitter/Friendships/IncomingTest.php index 8c5cb6426b..c1309e1f0a 100644 --- a/tests/src/Module/Api/Twitter/Friendships/IncomingTest.php +++ b/tests/src/Module/Api/Twitter/Friendships/IncomingTest.php @@ -19,11 +19,7 @@ class IncomingTest extends ApiTest $lists = new Incoming(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $lists->run(); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); self::assertIsArray($json->ids); } diff --git a/tests/src/Module/Api/Twitter/Lists/StatusesTest.php b/tests/src/Module/Api/Twitter/Lists/StatusesTest.php index 5d989b71e7..3f47fcaca6 100644 --- a/tests/src/Module/Api/Twitter/Lists/StatusesTest.php +++ b/tests/src/Module/Api/Twitter/Lists/StatusesTest.php @@ -31,11 +31,7 @@ class StatusesTest extends ApiTest $lists = new Statuses(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); $response = $lists->run(['list_id' => 1, 'page' => -1, 'max_id' => 10]); - $body = (string)$response->getBody(); - - self::assertJson($body); - - $json = json_decode($body); + $json = $this->toJson($response); foreach ($json as $status) { self::assertIsString($status->text); diff --git a/tests/src/Module/Api/Twitter/Media/UploadTest.php b/tests/src/Module/Api/Twitter/Media/UploadTest.php index abc9d8fdc6..5b0ce1186b 100644 --- a/tests/src/Module/Api/Twitter/Media/UploadTest.php +++ b/tests/src/Module/Api/Twitter/Media/UploadTest.php @@ -72,12 +72,13 @@ class UploadTest extends ApiTest ]; $response = (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run(); - $media = json_decode($response->getBody(), true); - self::assertEquals('image/png', $media['image']['image_type']); - self::assertEquals(1, $media['image']['w']); - self::assertEquals(1, $media['image']['h']); - self::assertNotEmpty($media['image']['friendica_preview_url']); + $media = $this->toJson($response); + + self::assertEquals('image/png', $media->image->image_type); + self::assertEquals(1, $media->image->w); + self::assertEquals(1, $media->image->h); + self::assertNotEmpty($media->image->friendica_preview_url); } /** diff --git a/tests/src/Module/Api/Twitter/SavedSearchesTest.php b/tests/src/Module/Api/Twitter/SavedSearchesTest.php index 14973b3912..5735f8eef0 100644 --- a/tests/src/Module/Api/Twitter/SavedSearchesTest.php +++ b/tests/src/Module/Api/Twitter/SavedSearchesTest.php @@ -14,7 +14,7 @@ class SavedSearchesTest extends ApiTest $savedSearch = new SavedSearches(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']); $response = $savedSearch->run(); - $result = json_decode($response->getBody()); + $result = $this->toJson($response); self::assertEquals(['Content-type' => ['application/json'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders()); self::assertEquals(1, $result[0]->id); -- 2.39.5