. * */ namespace Friendica\Test\src\Module\Api; use Friendica\Core\Addon; use Friendica\Core\Hook; use Friendica\Database\Database; use Friendica\DI; use Friendica\Module\Api\ApiResponse; use Friendica\Security\Authentication; use Friendica\Test\FixtureTest; use Friendica\Test\Util\ApiResponseDouble; use Friendica\Test\Util\AuthenticationDouble; abstract class ApiTest extends FixtureTest { /** * 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(ApiResponse::class, ['instanceOf' => ApiResponseDouble::class, 'shared' => true]); DI::init($this->dice); $this->installAuthTest(); } protected function tearDown(): void { ApiResponseDouble::reset(); parent::tearDown(); } /** * 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(); } }