Inherit ApiResponse from Response

This commit is contained in:
Philipp 2021-11-21 21:52:36 +01:00
parent 561aba18e3
commit 537b74f307
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
46 changed files with 326 additions and 277 deletions

View file

@ -6,19 +6,12 @@ use Friendica\App\Arguments;
use Friendica\App\BaseURL;
use Friendica\Core\L10n;
use Friendica\Factory\Api\Twitter\User;
use Friendica\Module\Api\ApiResponse;
use Friendica\Test\MockedTest;
use Friendica\Test\Util\ApiResponseDouble;
use Psr\Log\NullLogger;
class ApiResponseTest extends MockedTest
{
protected function tearDown(): void
{
ApiResponseDouble::reset();
parent::tearDown();
}
public function testErrorWithJson()
{
$l10n = \Mockery::mock(L10n::class);
@ -27,10 +20,10 @@ class ApiResponseTest extends MockedTest
$baseUrl = \Mockery::mock(BaseURL::class);
$twitterUser = \Mockery::mock(User::class);
$response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response = new ApiResponse($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response->error(200, 'OK', 'error_message', 'json');
self::assertEquals('{"error":"error_message","code":"200 OK","request":""}', ApiResponseDouble::getOutput());
self::assertEquals('{"error":"error_message","code":"200 OK","request":""}', $response->getContent());
}
public function testErrorWithXml()
@ -41,7 +34,7 @@ class ApiResponseTest extends MockedTest
$baseUrl = \Mockery::mock(BaseURL::class);
$twitterUser = \Mockery::mock(User::class);
$response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response = new ApiResponse($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response->error(200, 'OK', 'error_message', 'xml');
self::assertEquals('<?xml version="1.0"?>' . "\n" .
@ -52,7 +45,7 @@ class ApiResponseTest extends MockedTest
' <code>200 OK</code>' . "\n" .
' <request/>' . "\n" .
'</status>' . "\n",
ApiResponseDouble::getOutput());
$response->getContent());
}
public function testErrorWithRss()
@ -63,7 +56,7 @@ class ApiResponseTest extends MockedTest
$baseUrl = \Mockery::mock(BaseURL::class);
$twitterUser = \Mockery::mock(User::class);
$response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response = new ApiResponse($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response->error(200, 'OK', 'error_message', 'rss');
self::assertEquals(
@ -75,7 +68,7 @@ class ApiResponseTest extends MockedTest
' <code>200 OK</code>' . "\n" .
' <request/>' . "\n" .
'</status>' . "\n",
ApiResponseDouble::getOutput());
$response->getContent());
}
public function testErrorWithAtom()
@ -86,7 +79,7 @@ class ApiResponseTest extends MockedTest
$baseUrl = \Mockery::mock(BaseURL::class);
$twitterUser = \Mockery::mock(User::class);
$response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response = new ApiResponse($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response->error(200, 'OK', 'error_message', 'atom');
self::assertEquals(
@ -98,7 +91,7 @@ class ApiResponseTest extends MockedTest
' <code>200 OK</code>' . "\n" .
' <request/>' . "\n" .
'</status>' . "\n",
ApiResponseDouble::getOutput());
$response->getContent());
}
public function testUnsupported()
@ -112,9 +105,9 @@ class ApiResponseTest extends MockedTest
$baseUrl = \Mockery::mock(BaseURL::class);
$twitterUser = \Mockery::mock(User::class);
$response = new ApiResponseDouble($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response = new ApiResponse($l10n, $args, new NullLogger(), $baseUrl, $twitterUser);
$response->unsupported();
self::assertEquals('{"error":"API endpoint %s %s is not implemented","error_description":"The API endpoint is currently not implemented but might be in the future."}', ApiResponseDouble::getOutput());
self::assertEquals('{"error":"API endpoint %s %s is not implemented","error_description":"The API endpoint is currently not implemented but might be in the future."}', $response->getContent());
}
}

View file

@ -25,10 +25,8 @@ use Friendica\Core\Addon;
use Friendica\Core\Hook;
use Friendica\Database\Database;
use Friendica\DI;
use Friendica\Module\Api\ApiResponse;
use Friendica\Security\Authentication;
use Friendica\Test\FixtureTest;
use Friendica\Test\Util\ApiResponseDouble;
use Friendica\Test\Util\AuthenticationDouble;
abstract class ApiTest extends FixtureTest
@ -53,20 +51,12 @@ abstract class ApiTest extends FixtureTest
parent::setUp(); // TODO: Change the autogenerated stub
$this->dice = $this->dice
->addRule(Authentication::class, ['instanceOf' => AuthenticationDouble::class, 'shared' => true])
->addRule(ApiResponse::class, ['instanceOf' => ApiResponseDouble::class, 'shared' => true]);
->addRule(Authentication::class, ['instanceOf' => AuthenticationDouble::class, 'shared' => true]);
DI::init($this->dice);
$this->installAuthTest();
}
protected function tearDown(): void
{
ApiResponseDouble::reset();
parent::tearDown();
}
/**
* installs auththest.
*

View file

@ -23,9 +23,7 @@ namespace Friendica\Test\src\Module\Api\Friendica;
use Friendica\DI;
use Friendica\Module\Api\Friendica\Notification;
use Friendica\Network\HTTPException\BadRequestException;
use Friendica\Test\src\Module\Api\ApiTest;
use Friendica\Test\Util\ApiResponseDouble;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal;
@ -67,19 +65,17 @@ class NotificationTest extends ApiTest
</notes>
XML;
$notification = new Notification(DI::l10n(), ['extension' => 'xml']);
$notification->rawContent();
$notification = new Notification(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'xml']);
$response = $notification->run();
self::assertXmlStringEqualsXmlString($assertXml, ApiResponseDouble::getOutput());
self::assertXmlStringEqualsXmlString($assertXml, $response->getContent());
}
public function testWithJsonResult()
{
$notification = new Notification(DI::l10n(),['parameter' => 'json']);
$notification->rawContent();
$notification = new Notification(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']);
$response = $notification->run();
$result = json_encode(ApiResponseDouble::getOutput());
self::assertJson($result);
self::assertJson($response->getContent());
}
}

View file

@ -31,7 +31,7 @@ class DeleteTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
(new Delete(DI::l10n()))->rawContent();
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
}
public function testWithoutAuthenticatedUser()
@ -42,7 +42,7 @@ class DeleteTest extends ApiTest
public function testWrong()
{
$this->expectException(BadRequestException::class);
(new Delete(DI::l10n(), ['photo_id' => 1]))->rawContent();
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run(['photo_id' => 1]);
}
public function testWithCorrectPhotoId()

View file

@ -31,13 +31,14 @@ class DeleteTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
(new Delete(DI::l10n()))->rawContent();
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
}
public function testWrong()
{
$this->expectException(BadRequestException::class);
(new Delete(DI::l10n(), ['album' => 'album_name']))->rawContent();
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run(['album' => 'album_name']);
}
public function testValid()

View file

@ -31,19 +31,19 @@ class UpdateTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
(new Update(DI::l10n()))->rawContent();
(new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
}
public function testTooFewArgs()
{
$this->expectException(BadRequestException::class);
(new Update(DI::l10n(), ['album' => 'album_name']))->rawContent();
(new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run(['album' => 'album_name']);
}
public function testWrongUpdate()
{
$this->expectException(BadRequestException::class);
(new Update(DI::l10n(), ['album' => 'album_name', 'album_new' => 'album_name']))->rawContent();
(new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run(['album' => 'album_name', 'album_new' => 'album_name']);
}
public function testWithoutAuthenticatedUser()

View file

@ -5,17 +5,14 @@ namespace Friendica\Test\src\Module\Api\GnuSocial\GnuSocial;
use Friendica\DI;
use Friendica\Module\Api\GNUSocial\GNUSocial\Version;
use Friendica\Test\src\Module\Api\ApiTest;
use Friendica\Test\Util\ApiResponseDouble;
class VersionTest extends ApiTest
{
public function test()
{
$version = new Version(DI::l10n(), ['extension' => 'json']);
$version->rawContent();
$version = new Version(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']);
$response = $version->run();
$result = json_decode(ApiResponseDouble::getOutput());
self::assertEquals('0.9.7', $result);
self::assertEquals('"0.9.7"', $response->getContent());
}
}

View file

@ -5,23 +5,22 @@ namespace Friendica\Test\src\Module\Api\GnuSocial\Help;
use Friendica\DI;
use Friendica\Module\Api\GNUSocial\Help\Test;
use Friendica\Test\src\Module\Api\ApiTest;
use Friendica\Test\Util\ApiResponseDouble;
class TestTest extends ApiTest
{
public function testJson()
{
$test = new Test(DI::l10n(), ['extension' => 'json']);
$test->rawContent();
$test = new Test(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']);
$response = $test->run();
self::assertEquals('"ok"', ApiResponseDouble::getOutput());
self::assertEquals('"ok"', $response->getContent());
}
public function testXml()
{
$test = new Test(DI::l10n(), ['extension' => 'xml']);
$test->rawContent();
$test = new Test(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'xml']);
$response = $test->run();
self::assertxml(ApiResponseDouble::getOutput(), 'ok');
self::assertxml($response->getContent(), 'ok');
}
}

View file

@ -5,16 +5,15 @@ namespace Friendica\Test\src\Module\Api\Twitter\Account;
use Friendica\DI;
use Friendica\Module\Api\Twitter\Account\RateLimitStatus;
use Friendica\Test\src\Module\Api\ApiTest;
use Friendica\Test\Util\ApiResponseDouble;
class RateLimitStatusTest extends ApiTest
{
public function testWithJson()
{
$rateLimitStatus = new RateLimitStatus(DI::l10n(), ['extension' => 'json']);
$rateLimitStatus->rawContent();
$rateLimitStatus = new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']);
$response = $rateLimitStatus->run();
$result = json_decode(ApiResponseDouble::getOutput());
$result = json_decode($response->getContent());
self::assertEquals(150, $result->remaining_hits);
self::assertEquals(150, $result->hourly_limit);
@ -23,9 +22,9 @@ class RateLimitStatusTest extends ApiTest
public function testWithXml()
{
$rateLimitStatus = new RateLimitStatus(DI::l10n(),['extension' => 'xml']);
$rateLimitStatus->rawContent();
$rateLimitStatus = new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'xml']);
$response = $rateLimitStatus->run();
self::assertXml(ApiResponseDouble::getOutput(), 'hash');
self::assertXml($response->getContent(), 'hash');
}
}

View file

@ -5,16 +5,15 @@ namespace Friendica\Test\src\Module\Api\Twitter;
use Friendica\DI;
use Friendica\Module\Api\Twitter\SavedSearches;
use Friendica\Test\src\Module\Api\ApiTest;
use Friendica\Test\Util\ApiResponseDouble;
class SavedSearchesTest extends ApiTest
{
public function test()
{
$savedSearch = new SavedSearches(DI::l10n(), ['extension' => 'json']);
$savedSearch->rawContent();
$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(ApiResponseDouble::getOutput());
$result = json_decode($response->getContent());
self::assertEquals(1, $result[0]->id);
self::assertEquals(1, $result[0]->id_str);