]> git.mxchange.org Git - friendica.git/commitdiff
Use X-REQUEST-ID for Error pages
authorPhilipp <admin@philipp.info>
Mon, 26 Dec 2022 20:17:32 +0000 (21:17 +0100)
committerPhilipp <admin@philipp.info>
Mon, 26 Dec 2022 20:18:05 +0000 (21:18 +0100)
55 files changed:
index.php
src/App.php
src/BaseModule.php
src/Capabilities/ICanHandleRequests.php
src/Module/Api/Mastodon/Apps.php
src/Module/BaseApi.php
src/Module/HTTPException/MethodNotAllowed.php
src/Module/HTTPException/PageNotFound.php
src/Module/OAuth/Acknowledge.php
src/Module/OAuth/Revoke.php
src/Module/OAuth/Token.php
src/Module/Special/HTTPException.php
static/dependencies.config.php
tests/src/Module/Api/ApiTest.php
tests/src/Module/Api/Friendica/DirectMessages/SearchTest.php
tests/src/Module/Api/Friendica/NotificationTest.php
tests/src/Module/Api/Friendica/Photo/DeleteTest.php
tests/src/Module/Api/Friendica/Photoalbum/DeleteTest.php
tests/src/Module/Api/Friendica/Photoalbum/UpdateTest.php
tests/src/Module/Api/GnuSocial/GnuSocial/ConfigTest.php
tests/src/Module/Api/GnuSocial/GnuSocial/VersionTest.php
tests/src/Module/Api/GnuSocial/Help/TestTest.php
tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php
tests/src/Module/Api/Twitter/Account/RateLimitStatusTest.php
tests/src/Module/Api/Twitter/Account/UpdateProfileTest.php
tests/src/Module/Api/Twitter/Blocks/ListsTest.php
tests/src/Module/Api/Twitter/DirectMessages/AllTest.php
tests/src/Module/Api/Twitter/DirectMessages/ConversationTest.php
tests/src/Module/Api/Twitter/DirectMessages/DestroyTest.php
tests/src/Module/Api/Twitter/DirectMessages/InboxTest.php
tests/src/Module/Api/Twitter/DirectMessages/NewDMTest.php
tests/src/Module/Api/Twitter/DirectMessages/SentTest.php
tests/src/Module/Api/Twitter/Favorites/CreateTest.php
tests/src/Module/Api/Twitter/Favorites/DestroyTest.php
tests/src/Module/Api/Twitter/FavoritesTest.php
tests/src/Module/Api/Twitter/Followers/ListsTest.php
tests/src/Module/Api/Twitter/Friends/ListsTest.php
tests/src/Module/Api/Twitter/Friendships/IncomingTest.php
tests/src/Module/Api/Twitter/Lists/StatusesTest.php
tests/src/Module/Api/Twitter/Media/UploadTest.php
tests/src/Module/Api/Twitter/SavedSearchesTest.php
tests/src/Module/Api/Twitter/Statuses/DestroyTest.php
tests/src/Module/Api/Twitter/Statuses/MentionsTest.php
tests/src/Module/Api/Twitter/Statuses/NetworkPublicTimelineTest.php
tests/src/Module/Api/Twitter/Statuses/RetweetTest.php
tests/src/Module/Api/Twitter/Statuses/ShowTest.php
tests/src/Module/Api/Twitter/Statuses/UpdateTest.php
tests/src/Module/Api/Twitter/Statuses/UserTimelineTest.php
tests/src/Module/Api/Twitter/Users/LookupTest.php
tests/src/Module/Api/Twitter/Users/SearchTest.php
tests/src/Module/Api/Twitter/Users/ShowTest.php
tests/src/Module/NodeInfoTest.php
tests/src/Module/Special/OptionsTest.php
view/templates/exception.tpl
view/templates/http_status.tpl

index ba990532b824ba1b8998e5f6360a4a6799eda1e4..c8d0037df023683d014a8f8a09469a07fbafe7e9 100644 (file)
--- a/index.php
+++ b/index.php
@@ -45,6 +45,7 @@ $a->runFrontend(
        $dice->create(\Friendica\Core\PConfig\Capability\IManagePersonalConfigValues::class),
        $dice->create(\Friendica\Security\Authentication::class),
        $dice->create(\Friendica\App\Page::class),
+       $dice->create(Friendica\Module\Special\HTTPException::class),
        new \Friendica\Util\HTTPInputData($_SERVER),
        $start_time
 );
index b41215380f92b70d82ff00e371fdd3478c48b316..b84c3b629493a4efb9466beaf00bafb521348384 100644 (file)
@@ -573,13 +573,14 @@ class App
         * @param IManagePersonalConfigValues $pconfig
         * @param Authentication              $auth       The Authentication backend of the node
         * @param App\Page                    $page       The Friendica page printing container
+        * @param ModuleHTTPException         $httpException The possible HTTP Exception container
         * @param HTTPInputData               $httpInput  A library for processing PHP input streams
         * @param float                       $start_time The start time of the overall script execution
         *
         * @throws HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, HTTPInputData $httpInput, float $start_time)
+       public function runFrontend(App\Router $router, IManagePersonalConfigValues $pconfig, Authentication $auth, App\Page $page, ModuleHTTPException $httpException, HTTPInputData $httpInput, float $start_time)
        {
                $this->profiler->set($start_time, 'start');
                $this->profiler->set(microtime(true), 'classinit');
@@ -713,9 +714,9 @@ class App
                        $httpinput = $httpInput->process();
                        $input     = array_merge($httpinput['variables'], $httpinput['files'], $request ?? $_REQUEST);
 
-                       // Let the module run it's internal process (init, get, post, ...)
+                       // Let the module run its internal process (init, get, post, ...)
                        $timestamp = microtime(true);
-                       $response = $module->run($input);
+                       $response = $module->run($httpException, $input);
                        $this->profiler->set(microtime(true) - $timestamp, 'content');
                        if ($response->getHeaderLine(ICanCreateResponses::X_HEADER) === ICanCreateResponses::TYPE_HTML) {
                                $page->run($this, $this->baseURL, $this->args, $this->mode, $response, $this->l10n, $this->profiler, $this->config, $pconfig, $this->session->getLocalUserId());
@@ -723,7 +724,7 @@ class App
                                $page->exit($response);
                        }
                } catch (HTTPException $e) {
-                       (new ModuleHTTPException())->rawContent($e);
+                       $httpException->rawContent($e);
                }
                $page->logRuntime($this->config, 'runFrontend');
        }
index 09107f04722c6a66754a706f73be772ce5a8193f..12efbce81170b476918e9a922453f37aa179db24 100644 (file)
@@ -181,7 +181,7 @@ abstract class BaseModule implements ICanHandleRequests
        /**
         * {@inheritDoc}
         */
-       public function run(array $request = []): ResponseInterface
+       public function run(ModuleHTTPException $httpException, array $request = []): ResponseInterface
        {
                // @see https://github.com/tootsuite/mastodon/blob/c3aef491d66aec743a3a53e934a494f653745b61/config/initializers/cors.rb
                if (substr($this->args->getQueryString(), 0, 12) == '.well-known/') {
@@ -243,7 +243,7 @@ abstract class BaseModule implements ICanHandleRequests
                        $this->response->addContent($arr['content']);
                        $this->response->addContent($this->content($request));
                } catch (HTTPException $e) {
-                       $this->response->addContent((new ModuleHTTPException())->content($e));
+                       $this->response->addContent($httpException->content($e));
                } finally {
                        $this->profiler->set(microtime(true) - $timestamp, 'content');
                }
index 154eae69e5b65ae534fa3057bdf09b4839a8efcf..c0f99eaa1bfa441fd1b4a12c654bd7bc5fca5a10 100644 (file)
@@ -21,6 +21,7 @@
 
 namespace Friendica\Capabilities;
 
+use Friendica\Module\Special\HTTPException as ModuleHTTPException;
 use Friendica\Network\HTTPException;
 use Psr\Http\Message\ResponseInterface;
 
@@ -30,11 +31,12 @@ use Psr\Http\Message\ResponseInterface;
 interface ICanHandleRequests
 {
        /**
-        * @param array $request The $_REQUEST content (including content from the PHP input stream)
+        * @param ModuleHTTPException $httpException The special HTTPException Module in case of underlying errors
+        * @param array               $request       The $_REQUEST content (including content from the PHP input stream)
         *
         * @return ResponseInterface responding to the request handling
         *
         * @throws HTTPException\InternalServerErrorException
         */
-       public function run(array $request = []): ResponseInterface;
+       public function run(ModuleHTTPException $httpException, array $request = []): ResponseInterface;
 }
index f14ff68177d5af41b8c85740539020412c45a88f..1c1ec80602d328398d765cfb80562294aaf25242 100644 (file)
@@ -25,6 +25,7 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
+use Friendica\Module\Special\HTTPException;
 use Friendica\Util\Network;
 use Psr\Http\Message\ResponseInterface;
 
@@ -33,9 +34,9 @@ use Psr\Http\Message\ResponseInterface;
  */
 class Apps extends BaseApi
 {
-       public function run(array $request = [], bool $scopecheck = true): ResponseInterface
+       public function run(HTTPException $httpException, array $request = [], bool $scopecheck = true): ResponseInterface
        {
-               return parent::run($request, false);
+               return parent::run($httpException, $request, false);
        }
 
        /**
index 1d5249ac85f70481566d9d297e856fc9ddba2613..82dda9de9fc46f8afa887600da8742ea2245bb22 100644 (file)
@@ -33,6 +33,7 @@ use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Model\User;
 use Friendica\Module\Api\ApiResponse;
+use Friendica\Module\Special\HTTPException as ModuleHTTPException;
 use Friendica\Network\HTTPException;
 use Friendica\Security\BasicAuth;
 use Friendica\Security\OAuth;
@@ -80,7 +81,7 @@ class BaseApi extends BaseModule
         *
         * @throws HTTPException\ForbiddenException
         */
-       public function run(array $request = [], bool $scopecheck = true): ResponseInterface
+       public function run(ModuleHTTPException $httpException, array $request = [], bool $scopecheck = true): ResponseInterface
        {
                if ($scopecheck) {
                        switch ($this->args->getMethod()) {
@@ -97,7 +98,7 @@ class BaseApi extends BaseModule
                        }       
                }
 
-               return parent::run($request);
+               return parent::run($httpException, $request);
        }
 
        /**
index 7dc3737596bb19c52c20bf9609e1b3d729641177..5728e0a3767c172d6953b6aad605cc9487dd143d 100644 (file)
 namespace Friendica\Module\HTTPException;
 
 use Friendica\BaseModule;
-use Friendica\DI;
 use Friendica\Network\HTTPException;
 
 class MethodNotAllowed extends BaseModule
 {
        protected function content(array $request = []): string
        {
-               throw new HTTPException\MethodNotAllowedException(DI::l10n()->t('Method Not Allowed.'));
+               throw new HTTPException\MethodNotAllowedException($this->t('Method Not Allowed.'));
        }
 }
index ecebc7757ae7d20e84dc4e3728e2ea2db5334c7f..2b6e54652799a1450ca1d9ec38a5596c8679d73b 100644 (file)
@@ -25,8 +25,8 @@ use Friendica\App;
 use Friendica\BaseModule;
 use Friendica\Core\L10n;
 use Friendica\Core\System;
-use Friendica\DI;
 use Friendica\Module\Response;
+use Friendica\Module\Special\HTTPException as ModuleHTTPException;
 use Friendica\Network\HTTPException;
 use Friendica\Util\Profiler;
 use Psr\Http\Message\ResponseInterface;
@@ -46,10 +46,10 @@ class PageNotFound extends BaseModule
 
        protected function content(array $request = []): string
        {
-               throw new HTTPException\NotFoundException(DI::l10n()->t('Page not found.'));
+               throw new HTTPException\NotFoundException($this->t('Page not found.'));
        }
 
-       public function run(array $request = []): ResponseInterface
+       public function run(ModuleHTTPException $httpException, array $request = []): ResponseInterface
        {
                /* The URL provided does not resolve to a valid module.
                 *
@@ -77,6 +77,6 @@ class PageNotFound extends BaseModule
                        'query'       => $this->server['QUERY_STRING']
                ]);
 
-               return parent::run($request); // TODO: Change the autogenerated stub
+               return parent::run($httpException, $request);
        }
 }
index fe947a63c0d97adc841eeb084eea4dd91bc82310..e2a65a0e286cfdcded35346bc76f6d459efa449e 100644 (file)
@@ -24,6 +24,7 @@ namespace Friendica\Module\OAuth;
 use Friendica\Core\Renderer;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
+use Friendica\Module\Special\HTTPException;
 use Psr\Http\Message\ResponseInterface;
 
 /**
@@ -31,9 +32,9 @@ use Psr\Http\Message\ResponseInterface;
  */
 class Acknowledge extends BaseApi
 {
-       public function run(array $request = [], bool $scopecheck = true): ResponseInterface
+       public function run(HTTPException $httpException, array $request = [], bool $scopecheck = true): ResponseInterface
        {
-               return parent::run($request, false);
+               return parent::run($httpException, $request, false);
        }
 
        protected function post(array $request = [])
index 0604e90bf7de2bbcae6b3f0d3f277d3ded09e599..11d65420c02cdf4ad48795503ddc79c994f00af3 100644 (file)
@@ -26,6 +26,7 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
+use Friendica\Module\Special\HTTPException;
 use Psr\Http\Message\ResponseInterface;
 
 /**
@@ -33,9 +34,9 @@ use Psr\Http\Message\ResponseInterface;
  */
 class Revoke extends BaseApi
 {
-       public function run(array $request = [], bool $scopecheck = true): ResponseInterface
+       public function run(HTTPException $httpException, array $request = [], bool $scopecheck = true): ResponseInterface
        {
-               return parent::run($request, false);
+               return parent::run($httpException, $request, false);
        }
 
        protected function post(array $request = [])
index 1da8df18d5a41c64137a4661edce2a2362fb68a2..14e9be7a69159887081e6e8013b910b864507f81 100644 (file)
@@ -26,6 +26,7 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Module\BaseApi;
+use Friendica\Module\Special\HTTPException;
 use Friendica\Security\OAuth;
 use Friendica\Util\DateTimeFormat;
 use Psr\Http\Message\ResponseInterface;
@@ -36,9 +37,9 @@ use Psr\Http\Message\ResponseInterface;
  */
 class Token extends BaseApi
 {
-       public function run(array $request = [], bool $scopecheck = true): ResponseInterface
+       public function run(HTTPException $httpException, array $request = [], bool $scopecheck = true): ResponseInterface
        {
-               return parent::run($request, false);
+               return parent::run($httpException, $request, false);
        }
 
        protected function post(array $request = [])
index 0cd7817ed4de05017a3156d0e98d5ecb1805c7a8..6928cf810f543897529e1fd4f1db980c9fd90b77 100644 (file)
 
 namespace Friendica\Module\Special;
 
-use Friendica\Core\Logger;
+use Friendica\App\Arguments;
+use Friendica\App\Request;
+use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
+use Friendica\Core\Session\Model\UserSession;
 use Friendica\Core\System;
-use Friendica\DI;
+use Psr\Log\LoggerInterface;
 
 /**
  * This special module displays HTTPException when they are thrown in modules.
@@ -33,27 +36,52 @@ use Friendica\DI;
  */
 class HTTPException
 {
+       /** @var L10n */
+       protected $l10n;
+       /** @var LoggerInterface */
+       protected $logger;
+       /** @var Arguments */
+       protected $args;
+       /** @var bool */
+       protected $isSiteAdmin;
+       /** @var array */
+       protected $server;
+       /** @var string */
+       protected $requestId;
+
+       public function __construct(L10n $l10n, LoggerInterface $logger, Arguments $args, UserSession $session, Request $request, array $server = [])
+       {
+               $this->logger      = $logger;
+               $this->l10n        = $l10n;
+               $this->args        = $args;
+               $this->isSiteAdmin = $session->isSiteAdmin();
+               $this->server      = $server;
+               $this->requestId   = $request->getRequestId();
+       }
+
        /**
         * Generates the necessary template variables from the caught HTTPException.
         *
         * Fills in the blanks if title or descriptions aren't provided by the exception.
         *
         * @param \Friendica\Network\HTTPException $e
+        *
         * @return array ['$title' => ..., '$description' => ...]
         */
-       private static function getVars(\Friendica\Network\HTTPException $e)
+       private function getVars(\Friendica\Network\HTTPException $e)
        {
                // Explanations are mostly taken from https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
                $vars = [
-                       '$title' => $e->getDescription() ?: 'Error ' . $e->getCode(),
-                       '$message' => $e->getMessage() ?: $e->getExplanation(),
-                       '$back' => DI::l10n()->t('Go back'),
-                       '$stack_trace' => DI::l10n()->t('Stack trace:'),
+                       '$title'       => $e->getDescription() ?: 'Error ' . $e->getCode(),
+                       '$message'     => $e->getMessage() ?: $e->getExplanation(),
+                       '$back'        => $this->l10n->t('Go back'),
+                       '$stack_trace' => $this->l10n->t('Stack trace:'),
+                       '$request_id'  => $this->requestId,
                ];
 
-               if (DI::app()->isSiteAdmin()) {
-                       $vars['$thrown'] = DI::l10n()->t('Exception thrown in %s:%d', $e->getFile(), $e->getLine());
-                       $vars['$trace'] = $e->getTraceAsString();
+               if ($this->isSiteAdmin) {
+                       $vars['$thrown'] = $this->l10n->t('Exception thrown in %s:%d', $e->getFile(), $e->getLine());
+                       $vars['$trace']  = $e->getTraceAsString();
                }
 
                return $vars;
@@ -63,6 +91,7 @@ class HTTPException
         * Displays a bare message page with no theming at all.
         *
         * @param \Friendica\Network\HTTPException $e
+        *
         * @throws \Exception
         */
        public function rawContent(\Friendica\Network\HTTPException $e)
@@ -70,13 +99,13 @@ class HTTPException
                $content = '';
 
                if ($e->getCode() >= 400) {
-                       $vars = self::getVars($e);
+                       $vars = $this->getVars($e);
                        try {
-                               $tpl = Renderer::getMarkupTemplate('http_status.tpl');
+                               $tpl     = Renderer::getMarkupTemplate('http_status.tpl');
                                $content = Renderer::replaceMacros($tpl, $vars);
                        } catch (\Exception $e) {
                                $content = "<h1>{$vars['$title']}</h1><p>{$vars['$message']}</p>";
-                               if (DI::app()->isSiteAdmin()) {
+                               if ($this->isSiteAdmin) {
                                        $content .= "<p>{$vars['$thrown']}</p>";
                                        $content .= "<pre>{$vars['$trace']}</pre>";
                                }
@@ -90,19 +119,28 @@ class HTTPException
         * Returns a content string that can be integrated in the current theme.
         *
         * @param \Friendica\Network\HTTPException $e
+        *
         * @return string
         * @throws \Exception
         */
        public function content(\Friendica\Network\HTTPException $e): string
        {
-               header($_SERVER["SERVER_PROTOCOL"] . ' ' . $e->getCode() . ' ' . $e->getDescription());
+               header($this->server['SERVER_PROTOCOL'] ?? 'HTTP/1.0' . ' ' . $e->getCode() . ' ' . $e->getDescription());
 
                if ($e->getCode() >= 400) {
-                       Logger::debug('Exit with error', ['code' => $e->getCode(), 'description' => $e->getDescription(), 'query' => DI::args()->getQueryString(), 'callstack' => System::callstack(20), 'method' => DI::args()->getMethod(), 'agent' => $_SERVER['HTTP_USER_AGENT'] ?? '']);
+                       $this->logger->debug('Exit with error',
+                               [
+                                       'code'        => $e->getCode(),
+                                       'description' => $e->getDescription(),
+                                       'query'       => $this->args->getQueryString(),
+                                       'callstack'   => System::callstack(20),
+                                       'method'      => $this->args->getMethod(),
+                                       'agent'       => $this->server['HTTP_USER_AGENT'] ?? ''
+                               ]);
                }
 
                $tpl = Renderer::getMarkupTemplate('exception.tpl');
 
-               return Renderer::replaceMacros($tpl, self::getVars($e));
+               return Renderer::replaceMacros($tpl, $this->getVars($e));
        }
 }
index fd242c3417ad94aecac835aec12dff720225067a..a4c52e004303a39e409afbc2a5e7febaa04b21bf 100644 (file)
@@ -273,5 +273,10 @@ return [
        ],
        \Psr\Clock\ClockInterface::class => [
                'instanceOf' => Util\Clock\SystemClock::class
-       ]
+       ],
+       \Friendica\Module\Special\HTTPException::class => [
+               'constructParams' => [
+                       $_SERVER
+               ],
+       ],
 ];
index 890bba19b65e367657dc0e05577282556b5eb75d..c01f39f4c90f35abfe2475cdfb23dc5644d5d19a 100644 (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;
 
index 09845a99b490f9af615eb958ca3f0deb35e61a5c..9ec0f6f0dc2c435262433bf666669c18694d994b 100644 (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'
                        ]);
 
index 3c17471b034fd573ce18c8ed7f5515a7f4468860..1599b8abc14480d2fec442559bc311b58b5e08d8 100644 (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);
 
index e3e208ff02363e1a0eb526d914ff3d45bbf9a2f1..b946affe2b6ea6474de5544814843f62840eda81 100644 (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'
                        ]);
 
index 6ce77f63aad483186f4ad15b2fa76b4fc5fbb0a9..db16adfb90213a937acb2459a433f5aa78e8005c 100644 (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']
                        );
 
index 5f25a62ac0e8d38607e17704151316088a8ca3f2..9a2b053ddedf403d02ece47085135b1e9d04b50e 100644 (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'
                        ]);
index 64d2a778268cb0d37d16ab1bdd41915a0f98e792..52beb98019cb93a131564871f14fbb922d837490 100644 (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);
index 175aaabda39ed2d1dba67173e9db20393326bfd0..b0ec8f832e7b71eb9e3cdeb9766aaff31cc642f2 100644 (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'],
index be0e187a63ae2edee730284b0e7574b2073cd272..47f6492b1e0cbbb88210b2effdc2d7411a0258ec 100644 (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'],
index 5d3e33d1328f649bc1cf72ffaf584e1536df5f57..daea2ca53eedbf62588adc2d302d51b4f89d231a 100644 (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);
 
index 8d928b3ee33bbead6716bf64c9b718160f4a8053..ef566de2dd582f9420208d897ab6c79cbd454da3 100644 (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'],
index d3c8f930240a7c8761797bbe62743caca9f1d545..abdde24861f460e3aa99fcbf0835226000661050 100644 (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'
                        ]);
index 1212a3f8e961c7246ff1dfea71ef62f6b299aa53..30d42414d4f05c2f69211bee44084a5cfab3a494 100644 (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);
 
index 666299cc6907dadb93cbbbdb66279e7a1c2c0d91..6d74b87128cee27fca62c24df50fff4d294536f1 100644 (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);
 
index e895845aad3ad913a757e3e53eabba2d8cde34c0..834a5150e0a000bbdc39a3537d2c4687b38102ca 100644 (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,
                        ]);
 
index b9317190b67c82c256a862d1f59933e3cee556ee..21459053790cffbf29e84c792926478fbb9a8fae 100644 (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,
                        ]);
index cee1450cf767986e0af0734f9df1d6aca654bfa5..f239755b3efe26e14cf384c5094307e6a2df0daa 100644 (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);
 
index cab3c2202690f162f8fa36c9fde8159f9c473d26..2b473fb48b6003b5813f5e513ff075ee35bc9f79 100644 (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',
index 9c498af5f66cfd87550106767fef967c1dfacb07..f63a24f80693434a7e8b1515547608d0a696df08 100644 (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');
        }
index 61e235700c27a45f34f338e306633504560ac3ca..fd0f86b6aae57b2fd5fc584c0a26ce0a947563d7 100644 (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
                        ]);
 
index bb7b54ee4222124bf033469a995d9edfccf8d564..e65c1201429fe8340d87e3a7845a6e10d073019f 100644 (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
                        ]);
 
index 6da92e667d95993b00b688b561dd6d784d6ed06e..c95aff6917bd56851024b3d7b028ee224fd6dd14 100644 (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));
 
index 02e2745492d2dc2be9ba3dba1edc14de7adbd58f..f48916ce80a50388e41d7e37e83aba88a8ae4da2 100644 (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);
 
index 07fdc891f3d3f6018d7ad1ea8a7442e1209291a0..53d8d8d8662d93b9cc64da6b2d0b488241d4d5cc 100644 (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);
 
index 89a296b06653f23724b50ab8bd6933c6f1cb797d..f93375b14ea907b5e7f9937615555f8678215911 100644 (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);
 
index 8bc8257c0c06b515a8b441bb35873eceeaff4837..f6421815333dd61bcb188dd92b6fc39c3acfab64 100644 (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
                        ]);
 
index 7d649719177acf4370b46d5e4f6ffb51f6077ba3..f1930e244483a44c2516486875644d26144519ab 100644 (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);
 
index 1d6e140bd1312b15cef23e62e7e53771e1ce65fd..ab03919c99d117db6ef88751788eb028085576ea 100644 (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);
 
index 68ec195ce35ebbd895954a238932341b8fdc4cea..4a295255784357808b8d3f1127b2bce1279cd0de 100644 (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
                        ]);
 
index 0bb694528de1e3509c6bd07c7a0a9835495ea461..59daef80c77c7e99537b7eb4edc6ff15ac5b117a 100644 (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
                        ]);
 
index a09cd44d1e49a7f26d8278bc770f8f3f9dfffc4d..542cb28bac6430ff81c0c1a8cc1e8e9e0e04eff8 100644 (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
                ]);
 
index f2c99baa8fbe341933b6ecfe85fa14911daa1769..9f498b6920826e5f8c69ab403606da61bf6470de 100644 (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
                        ]);
 
index 656aa5e91a9f38bb96c1139c5232bcea65f97946..df284df2aebf889627a85c4984e5f0ebc889e868 100644 (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
                        ]);
index 92ca0702e3af0b8bdc3e552c63dd99c4c760e954..4754a34d7e9ae93611f8f93aef16a160f0041807 100644 (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>',
                        ]);
 
index 078a88f96f7ed7b9f7aa1885de4b8c4e617bf2ca..240ebc8e8e498738adbac5b0bc083ba53fa752ee 100644 (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));
 
index 9b5134fd8a27a52645d23418024293611fd0d30a..677e53df55d218f5ecb9731456f4b76c14bc5b47 100644 (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']
                        ]);
 
index 903bbe9fda990e57da05e2b4c3723032665915bb..0c816b5ab965d830e60d94958365edada007ecce 100644 (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);
        }
 }
index 703ad4f6cb805adf2699b45c2ad016848d566eed..3cec455352bdf8239718ab920c6c9fc6568a6730 100644 (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));
 
index a7766d24722804b2d53a9e2ee3af4e26345127c9..101ee021c72bce5c7357f2290b843e5f2d350215 100644 (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());
index 62ad1b3de29daf7fbfd159b1710e8f5e1d708300..cd16720505b8eca89b42cd7d6e3dc78c032dd87d 100644 (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());
index ad1a15f878b51fd607b2879cc36750c3a2db9518..3499a5cb158417520f01f61ac21184ce8059db0f 100644 (file)
@@ -7,6 +7,9 @@
 {{$stack_trace}}
 {{$trace}}</pre>
 {{/if}}
+{{if $request_id}}
+       <pre>Request: {{$request_id}}</pre>
+{{/if}}
 {{if $back}}
        <p><button type="button" onclick="window.history.back()" class="btn btn-primary">{{$back}}</button></p>
 {{/if}}
index a9c094c4b23194a2857f1f8336767e255142413d..874bf96691672f9d178447784a2a33ed8d751247 100644 (file)
@@ -8,5 +8,8 @@
        {{if $trace}}
                <pre>{{$trace nofilter}}</pre>
        {{/if}}
+       {{if $request_id}}
+               <pre>Request: {{$request_id}}</pre>
+       {{/if}}
        </body>
 </html>