Use X-REQUEST-ID for Error pages

This commit is contained in:
Philipp 2022-12-26 21:17:32 +01:00
parent 5584e7a4e5
commit 4f1bb0d274
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
55 changed files with 218 additions and 130 deletions

View file

@ -27,12 +27,14 @@ use Friendica\Core\Addon;
use Friendica\Core\Hook;
use Friendica\Database\Database;
use Friendica\DI;
use Friendica\Module\Special\HTTPException;
use Friendica\Security\Authentication;
use Friendica\Security\BasicAuth;
use Friendica\Test\FixtureTest;
use Friendica\Test\Util\AppDouble;
use Friendica\Test\Util\AuthenticationDouble;
use Friendica\Test\Util\AuthTestConfig;
use Mockery\MockInterface;
use Psr\Http\Message\ResponseInterface;
abstract class ApiTest extends FixtureTest
@ -59,6 +61,9 @@ abstract class ApiTest extends FixtureTest
'nurl' => 'http://localhost/profile/othercontact'
];
/** @var HTTPException */
protected $httpExceptionMock;
// User ID that we know is not in the database
const WRONG_USER_ID = 666;
@ -175,6 +180,8 @@ abstract class ApiTest extends FixtureTest
// Manual override to bypass API authentication
DI::app()->setIsLoggedIn(true);
$this->httpExceptionMock = $this->dice->create(HTTPException::class);
AuthTestConfig::$authenticated = true;
AuthTestConfig::$user_id = 42;

View file

@ -35,7 +35,7 @@ class SearchTest extends ApiTest
$directMessage = new DirectMessage(new NullLogger(), DI::dba(), DI::twitterUser());
$response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);
@ -53,7 +53,7 @@ class SearchTest extends ApiTest
$directMessage = new DirectMessage(new NullLogger(), DI::dba(), DI::twitterUser());
$response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'searchstring' => 'item_body'
]);
@ -74,7 +74,7 @@ class SearchTest extends ApiTest
$directMessage = new DirectMessage(new NullLogger(), DI::dba(), DI::twitterUser());
$response = (new Search($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'searchstring' => 'test'
]);

View file

@ -67,7 +67,7 @@ class NotificationTest extends ApiTest
XML;
$response = (new Notification(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'xml']))
->run();
->run($this->httpExceptionMock);
self::assertXmlStringEqualsXmlString($assertXml, (string)$response->getBody());
self::assertEquals([
@ -79,7 +79,7 @@ XML;
public function testWithJsonResult()
{
$response = (new Notification(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -39,7 +39,7 @@ class DeleteTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run($this->httpExceptionMock);
}
public function testWithoutAuthenticatedUser()
@ -50,7 +50,7 @@ class DeleteTest extends ApiTest
public function testWrong()
{
$this->expectException(BadRequestException::class);
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run(['photo_id' => 1]);
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run($this->httpExceptionMock, ['photo_id' => 1]);
}
public function testValidWithPost()
@ -58,7 +58,7 @@ class DeleteTest extends ApiTest
$this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
$response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'photo_id' => '709057080661a283a6aa598501504178'
]);
@ -73,7 +73,7 @@ class DeleteTest extends ApiTest
$this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
$response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'photo_id' => '709057080661a283a6aa598501504178'
]);

View file

@ -40,7 +40,7 @@ class DeleteTest extends ApiTest
{
$this->expectException(BadRequestException::class);
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
@ -48,7 +48,7 @@ class DeleteTest extends ApiTest
{
$this->expectException(BadRequestException::class);
(new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'album' => 'album_name'
]);
}
@ -58,7 +58,7 @@ class DeleteTest extends ApiTest
$this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
$response = (new Delete(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'album' => 'test_album']
);

View file

@ -40,14 +40,14 @@ class UpdateTest extends ApiTest
{
$this->expectException(BadRequestException::class);
(new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
public function testTooFewArgs()
{
$this->expectException(BadRequestException::class);
(new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'album' => 'album_name'
]);
}
@ -56,7 +56,7 @@ class UpdateTest extends ApiTest
{
$this->expectException(BadRequestException::class);
(new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'album' => 'album_name',
'album_new' => 'album_name'
]);
@ -72,7 +72,7 @@ class UpdateTest extends ApiTest
$this->loadFixture(__DIR__ . '/../../../../../datasets/photo/photo.fixture.php', DI::dba());
$response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'album' => 'test_album',
'album_new' => 'test_album_2'
]);

View file

@ -37,7 +37,7 @@ class ConfigTest extends ApiTest
DI::config()->set('system', 'ssl_policy', BaseURL::SSL_POLICY_FULL);
$response = (new Config(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);
self::assertEquals('localhost', $json->site->server);

View file

@ -31,7 +31,7 @@ class VersionTest extends ApiTest
public function test()
{
$response = (new Version(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
self::assertEquals([
'Content-type' => ['application/json'],

View file

@ -31,7 +31,7 @@ class TestTest extends ApiTest
public function testJson()
{
$response = (new Test(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);
@ -45,7 +45,7 @@ class TestTest extends ApiTest
public function testXml()
{
$response = (new Test(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'xml']))
->run();
->run($this->httpExceptionMock);
self::assertEquals([
'Content-type' => ['text/xml'],

View file

@ -36,7 +36,7 @@ class VerifyCredentialsTest extends ApiTest
public function testApiAccountVerifyCredentials()
{
$response = (new VerifyCredentials(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -32,7 +32,7 @@ class RateLimitStatusTest extends ApiTest
public function testWithJson()
{
$response = (new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
$result = $this->toJson($response);
@ -48,7 +48,7 @@ class RateLimitStatusTest extends ApiTest
public function testWithXml()
{
$response = (new RateLimitStatus(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'xml']))
->run();
->run($this->httpExceptionMock);
self::assertEquals([
'Content-type' => ['text/xml'],

View file

@ -36,7 +36,7 @@ class UpdateProfileTest extends ApiTest
$this->useHttpMethod(Router::POST);
$response = (new UpdateProfile(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'name' => 'new_name',
'description' => 'new_description'
]);

View file

@ -34,7 +34,7 @@ class ListsTest extends ApiTest
public function testApiStatusesFWithBlocks()
{
$response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -40,7 +40,7 @@ class AllTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new All($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -39,7 +39,7 @@ class ConversationTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new Conversation($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'friendica_verbose' => true,
]);

View file

@ -38,7 +38,7 @@ class DestroyTest extends ApiTest
{
$this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
(new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
}
/**
@ -49,7 +49,7 @@ class DestroyTest extends ApiTest
public function testApiDirectMessagesDestroyWithVerbose()
{
$response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'friendica_verbose' => true,
]);
@ -85,7 +85,7 @@ class DestroyTest extends ApiTest
{
$this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
(new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'id' => 1
]);
}
@ -98,7 +98,7 @@ class DestroyTest extends ApiTest
public function testApiDirectMessagesDestroyWithIdAndVerbose()
{
$response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'id' => 1,
'friendica_parenturi' => 'parent_uri',
'friendica_verbose' => true,
@ -122,7 +122,7 @@ class DestroyTest extends ApiTest
$id = $ids[0]['id'];
$response = (new Destroy(DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'id' => $id,
'friendica_verbose' => true,
]);

View file

@ -41,7 +41,7 @@ class InboxTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new Inbox($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -39,7 +39,7 @@ class NewDMTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
self::assertEmpty((string)$response->getBody());
}
@ -71,7 +71,7 @@ class NewDMTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'text' => 'message_text',
'user_id' => 43
]);
@ -93,7 +93,7 @@ class NewDMTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'text' => 'message_text',
'user_id' => 44
]);
@ -117,7 +117,7 @@ class NewDMTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'text' => 'message_text',
'user_id' => 44,
'title' => 'message_title',
@ -143,7 +143,7 @@ class NewDMTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new NewDM($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
->run([
->run($this->httpExceptionMock, [
'text' => 'message_text',
'user_id' => 44,
'title' => 'message_title',

View file

@ -39,7 +39,7 @@ class SentTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new Sent($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run([
->run($this->httpExceptionMock, [
'friendica_verbose' => true,
]);
@ -59,7 +59,7 @@ class SentTest extends ApiTest
$directMessage = new DirectMessage(DI::logger(), DI::dba(), DI::twitterUser());
$response = (new Sent($directMessage, DI::dba(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
->run();
->run($this->httpExceptionMock);
self::assertXml((string)$response->getBody(), 'direct-messages');
}

View file

@ -47,7 +47,7 @@ class CreateTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -58,7 +58,7 @@ class CreateTest extends ApiTest
public function testApiFavoritesCreateDestroyWithCreateAction()
{
$response = (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 3
]);
@ -75,7 +75,7 @@ class CreateTest extends ApiTest
public function testApiFavoritesCreateDestroyWithCreateActionAndRss()
{
$response = (new Create(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => ICanCreateResponses::TYPE_RSS]))
->run([
->run($this->httpExceptionMock, [
'id' => 3
]);

View file

@ -46,7 +46,7 @@ class DestroyTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -57,7 +57,7 @@ class DestroyTest extends ApiTest
public function testApiFavoritesCreateDestroyWithDestroyAction()
{
$response = (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 3
]);

View file

@ -37,7 +37,7 @@ class FavoritesTest extends ApiTest
public function testApiFavorites()
{
$response = (new Favorites(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'page' => -1,
'max_id' => 10,
]);
@ -58,7 +58,7 @@ class FavoritesTest extends ApiTest
{
$response = (new Favorites(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
'extension' => ICanCreateResponses::TYPE_RSS
]))->run();
]))->run($this->httpExceptionMock);
self::assertEquals(ICanCreateResponses::TYPE_RSS, $response->getHeaderLine(ICanCreateResponses::X_HEADER));

View file

@ -34,7 +34,7 @@ class ListsTest extends ApiTest
public function testApiStatusesFWithFollowers()
{
$response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -36,7 +36,7 @@ class ListsTest extends ApiTest
public function testApiStatusesFWithFriends()
{
$response = (new Lists(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -36,7 +36,7 @@ class IncomingTest extends ApiTest
public function testApiFriendshipsIncoming()
{
$response = (new Incoming(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);

View file

@ -39,7 +39,7 @@ class StatusesTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Statuses(DI::dba(), DI::twitterStatus(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -48,7 +48,7 @@ class StatusesTest extends ApiTest
public function testApiListsStatusesWithListId()
{
$response = (new Statuses(DI::dba(), DI::twitterStatus(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'list_id' => 1,
'page' => -1,
'max_id' => 10
@ -68,7 +68,7 @@ class StatusesTest extends ApiTest
public function testApiListsStatusesWithListIdAndRss()
{
$response = (new Statuses(DI::dba(), DI::twitterStatus(), DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'rss']))
->run([
->run($this->httpExceptionMock, [
'list_id' => 1
]);

View file

@ -47,7 +47,7 @@ class UploadTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -61,7 +61,7 @@ class UploadTest extends ApiTest
AuthTestConfig::$authenticated = false;
(new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -80,7 +80,7 @@ class UploadTest extends ApiTest
];
(new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -103,7 +103,7 @@ class UploadTest extends ApiTest
];
$response = (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$media = $this->toJson($response);

View file

@ -31,7 +31,7 @@ class SavedSearchesTest extends ApiTest
public function test()
{
$response = (new SavedSearches(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => 'json']))
->run();
->run($this->httpExceptionMock);
$result = $this->toJson($response);

View file

@ -46,7 +46,7 @@ class DestroyTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -72,7 +72,7 @@ class DestroyTest extends ApiTest
public function testApiStatusesDestroyWithId()
{
$response = (new Destroy(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 1
]);

View file

@ -37,7 +37,7 @@ class MentionsTest extends ApiTest
public function testApiStatusesMentions()
{
$response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'max_id' => 10
]);
@ -55,7 +55,7 @@ class MentionsTest extends ApiTest
public function testApiStatusesMentionsWithNegativePage()
{
$response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'page' => -2
]);
@ -87,7 +87,7 @@ class MentionsTest extends ApiTest
public function testApiStatusesMentionsWithRss()
{
$response = (new Mentions(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], ['extension' => ICanCreateResponses::TYPE_RSS]))
->run([
->run($this->httpExceptionMock, [
'page' => -2
]);

View file

@ -37,7 +37,7 @@ class NetworkPublicTimelineTest extends ApiTest
public function testApiStatusesNetworkpublicTimeline()
{
$response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'max_id' => 10
]);
@ -59,7 +59,7 @@ class NetworkPublicTimelineTest extends ApiTest
public function testApiStatusesNetworkpublicTimelineWithNegativePage()
{
$response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'page' => -2
]);
@ -96,7 +96,7 @@ class NetworkPublicTimelineTest extends ApiTest
{
$response = (new NetworkPublicTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
'extension' => ICanCreateResponses::TYPE_RSS
]))->run([
]))->run($this->httpExceptionMock, [
'page' => -2
]);

View file

@ -46,7 +46,7 @@ class RetweetTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -72,7 +72,7 @@ class RetweetTest extends ApiTest
public function testApiStatusesRepeatWithId()
{
$response = (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 1
]);
@ -89,7 +89,7 @@ class RetweetTest extends ApiTest
public function testApiStatusesRepeatWithSharedId()
{
$response = (new Retweet(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 5
]);

View file

@ -40,7 +40,7 @@ class ShowTest extends ApiTest
(new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -51,7 +51,7 @@ class ShowTest extends ApiTest
public function testApiStatusesShowWithId()
{
$response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 1
]);
@ -69,7 +69,7 @@ class ShowTest extends ApiTest
public function testApiStatusesShowWithConversation()
{
$response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'id' => 1,
'conversation' => 1
]);

View file

@ -55,7 +55,7 @@ class UpdateTest extends ApiTest
];
$response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'status' => 'Status content #friendica',
'in_reply_to_status_id' => 0,
'lat' => 48,
@ -77,7 +77,7 @@ class UpdateTest extends ApiTest
public function testApiStatusesUpdateWithHtml()
{
$response = (new Update(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'htmlstatus' => '<b>Status content</b>',
]);

View file

@ -37,7 +37,7 @@ class UserTimelineTest extends ApiTest
public function testApiStatusesUserTimeline()
{
$response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'user_id' => 42,
'max_id' => 10,
'exclude_replies' => true,
@ -62,7 +62,7 @@ class UserTimelineTest extends ApiTest
public function testApiStatusesUserTimelineWithNegativePage()
{
$response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'user_id' => 42,
'page' => -2,
]);
@ -86,7 +86,7 @@ class UserTimelineTest extends ApiTest
{
$response = (new UserTimeline(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
'extension' => ICanCreateResponses::TYPE_RSS
]))->run();
]))->run($this->httpExceptionMock);
self::assertEquals(ICanCreateResponses::TYPE_RSS, $response->getHeaderLine(ICanCreateResponses::X_HEADER));

View file

@ -39,7 +39,7 @@ class LookupTest extends ApiTest
$this->expectException(NotFoundException::class);
(new Lookup(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
/**
@ -50,7 +50,7 @@ class LookupTest extends ApiTest
public function testApiUsersLookupWithUserId()
{
$respone = (new Lookup(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'user_id' => static::OTHER_USER['id']
]);

View file

@ -38,7 +38,7 @@ class SearchTest extends ApiTest
public function testApiUsersSearch()
{
$respone = (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run([
->run($this->httpExceptionMock, [
'q' => static::OTHER_USER['name']
]);
@ -56,7 +56,7 @@ class SearchTest extends ApiTest
{
$respone = (new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
'extension' => ICanCreateResponses::TYPE_XML
]))->run([
]))->run($this->httpExceptionMock, [
'q' => static::OTHER_USER['name']
]);
@ -73,6 +73,6 @@ class SearchTest extends ApiTest
$this->expectException(BadRequestException::class);
(new Search(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
}
}

View file

@ -37,7 +37,7 @@ class ShowTest extends ApiTest
public function testApiUsersShow()
{
$response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))
->run();
->run($this->httpExceptionMock);
$json = $this->toJson($response);
@ -58,7 +58,7 @@ class ShowTest extends ApiTest
{
$response = (new Show(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
'extension' => ICanCreateResponses::TYPE_XML
]))->run();
]))->run($this->httpExceptionMock);
self::assertEquals(ICanCreateResponses::TYPE_XML, $response->getHeaderLine(ICanCreateResponses::X_HEADER));

View file

@ -27,14 +27,26 @@ use Friendica\DI;
use Friendica\Module\NodeInfo110;
use Friendica\Module\NodeInfo120;
use Friendica\Module\NodeInfo210;
use Friendica\Module\Special\HTTPException;
use Friendica\Test\FixtureTest;
use Mockery\MockInterface;
class NodeInfoTest extends FixtureTest
{
/** @var MockInterface|HTTPException */
protected $httpExceptionMock;
protected function setUp(): void
{
parent::setUp();
$this->httpExceptionMock = \Mockery::mock(HTTPException::class);
}
public function testNodeInfo110()
{
$response = (new NodeInfo110(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), DI::config(), []))
->run();
->run($this->httpExceptionMock);
self::assertJson($response->getBody());
self::assertEquals(['Content-type' => ['application/json'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders());
@ -55,7 +67,7 @@ class NodeInfoTest extends FixtureTest
public function testNodeInfo120()
{
$response = (new NodeInfo120(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), DI::config(), []))
->run();
->run($this->httpExceptionMock);
self::assertJson($response->getBody());
self::assertEquals(['Content-type' => ['application/json; charset=utf-8'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders());
@ -75,7 +87,7 @@ class NodeInfoTest extends FixtureTest
public function testNodeInfo210()
{
$response = (new NodeInfo210(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), DI::config(), []))
->run();
->run($this->httpExceptionMock);
self::assertJson($response->getBody());
self::assertEquals(['Content-type' => ['application/json; charset=utf-8'], ICanCreateResponses::X_HEADER => ['json']], $response->getHeaders());

View file

@ -24,16 +24,28 @@ namespace Friendica\Test\src\Module\Special;
use Friendica\App\Router;
use Friendica\Capabilities\ICanCreateResponses;
use Friendica\DI;
use Friendica\Module\Special\HTTPException;
use Friendica\Module\Special\Options;
use Friendica\Test\FixtureTest;
use Mockery\MockInterface;
class OptionsTest extends FixtureTest
{
/** @var MockInterface|HTTPException */
protected $httpExceptionMock;
protected function setUp(): void
{
parent::setUp();
$this->httpExceptionMock = \Mockery::mock(HTTPException::class);
}
public function testOptionsAll()
{
$this->useHttpMethod(Router::OPTIONS);
$response = (new Options(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run();
$response = (new Options(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), []))->run($this->httpExceptionMock);
self::assertEmpty((string)$response->getBody());
self::assertEquals(204, $response->getStatusCode());
@ -51,7 +63,7 @@ class OptionsTest extends FixtureTest
$response = (new Options(DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), [], [
'AllowedMethods' => [Router::GET, Router::POST],
]))->run();
]))->run($this->httpExceptionMock);
self::assertEmpty((string)$response->getBody());
self::assertEquals(204, $response->getStatusCode());