Fix BaseApi and corresponding tests

This commit is contained in:
Philipp 2021-11-28 13:11:12 +01:00
parent 4cc36c9b2c
commit d576bb136b
No known key found for this signature in database
GPG key ID: 24A7501396EB5432
3 changed files with 40 additions and 1 deletions

View file

@ -67,6 +67,8 @@ class BaseApi extends BaseModule
public function __construct(App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = []) public function __construct(App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, ApiResponse $response, array $server, array $parameters = [])
{ {
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
$this->app = $app;
} }
protected function delete() protected function delete()

31
tests/Util/AppDouble.php Normal file
View file

@ -0,0 +1,31 @@
<?php
namespace Friendica\Test\Util;
use Friendica\App;
/**
* Making the App class overridable for specific situations
*
* @see App
*/
class AppDouble extends App
{
/** @var bool Marks/Overwrites if the user is currently logged in */
protected $isLoggedIn = false;
/**
* Manually overwrite the "isLoggedIn" behavior
*
* @param bool $isLoggedIn
*/
public function setIsLoggedIn(bool $isLoggedIn)
{
$this->isLoggedIn = $isLoggedIn;
}
public function isLoggedIn()
{
return $this->isLoggedIn;
}
}

View file

@ -21,12 +21,14 @@
namespace Friendica\Test\src\Module\Api; namespace Friendica\Test\src\Module\Api;
use Friendica\App;
use Friendica\Core\Addon; use Friendica\Core\Addon;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\DI; use Friendica\DI;
use Friendica\Security\Authentication; use Friendica\Security\Authentication;
use Friendica\Test\FixtureTest; use Friendica\Test\FixtureTest;
use Friendica\Test\Util\AppDouble;
use Friendica\Test\Util\AuthenticationDouble; use Friendica\Test\Util\AuthenticationDouble;
abstract class ApiTest extends FixtureTest abstract class ApiTest extends FixtureTest
@ -51,9 +53,13 @@ abstract class ApiTest extends FixtureTest
parent::setUp(); // TODO: Change the autogenerated stub parent::setUp(); // TODO: Change the autogenerated stub
$this->dice = $this->dice $this->dice = $this->dice
->addRule(Authentication::class, ['instanceOf' => AuthenticationDouble::class, 'shared' => true]); ->addRule(Authentication::class, ['instanceOf' => AuthenticationDouble::class, 'shared' => true])
->addRule(App::class, ['instanceOf' => AppDouble::class, 'shared' => true]);
DI::init($this->dice); DI::init($this->dice);
// Manual overwrite for API testrs :-)
DI::app()->setIsLoggedIn(true);
$this->installAuthTest(); $this->installAuthTest();
} }