. * */ namespace Friendica\Test\src\Module\Api; use Friendica\App; use Friendica\Core\Addon; use Friendica\Core\Hook; use Friendica\Database\Database; use Friendica\DI; 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; abstract class ApiTest extends FixtureTest { /** * Assert that the string is XML and contain the root element. * * @param string $result XML string * @param string $root_element Root element name * * @return void */ protected function assertXml(string $result = '', string $root_element = '') { self::assertStringStartsWith('', $result); self::assertStringContainsString('<' . $root_element, $result); // We could probably do more checks here. } protected function setUp(): void { parent::setUp(); // TODO: Change the autogenerated stub $this->dice = $this->dice ->addRule(Authentication::class, ['instanceOf' => AuthenticationDouble::class, 'shared' => true]) ->addRule(App::class, ['instanceOf' => AppDouble::class, 'shared' => true]); DI::init($this->dice); // Manual override to bypass API authentication DI::app()->setIsLoggedIn(true); AuthTestConfig::$authenticated = true; AuthTestConfig::$user_id = 42; $this->installAuthTest(); } protected function tearDown(): void { BasicAuth::setCurrentUserID(); parent::tearDown(); // TODO: Change the autogenerated stub } /** * installs auththest. * * @throws \Exception */ public function installAuthTest() { $addon = 'authtest'; $addon_file_path = __DIR__ . '/../../../Util/authtest/authtest.php'; $t = @filemtime($addon_file_path); @include_once($addon_file_path); if (function_exists($addon . '_install')) { $func = $addon . '_install'; $func(DI::app()); } /** @var Database $dba */ $dba = $this->dice->create(Database::class); $dba->insert('addon', [ 'name' => $addon, 'installed' => true, 'timestamp' => $t, 'plugin_admin' => function_exists($addon . '_addon_admin'), 'hidden' => file_exists('addon/' . $addon . '/.hidden') ]); Addon::loadAddons(); Hook::loadHooks(); } }