Merge remote-tracking branch 'upstream/develop' into api4

This commit is contained in:
Michael 2021-11-18 20:15:57 +00:00
commit b67c10812a
272 changed files with 989 additions and 963 deletions

View file

@ -0,0 +1,6 @@
<?php
function legacy_init()
{
// I don't do nothing
}

View file

@ -23,7 +23,7 @@ namespace Friendica\Test\src\App;
use Detection\MobileDetect;
use Friendica\App\Mode;
use Friendica\App\Module;
use Friendica\App\ModuleController;
use Friendica\Core\Config\ValueObject\Cache;
use Friendica\Database\Database;
use Friendica\Test\MockedTest;
@ -204,7 +204,7 @@ class ModeTest extends MockedTest
public function testIsBackendNotIsBackend()
{
$server = [];
$module = new Module();
$module = new ModuleController();
$mobileDetect = new MobileDetect();
$mode = (new Mode())->determineRunMode(true, $module, $server, $mobileDetect);
@ -218,7 +218,7 @@ class ModeTest extends MockedTest
public function testIsBackendButIndex()
{
$server = [];
$module = new Module(Module::DEFAULT, Module::DEFAULT_CLASS, [], true);
$module = new ModuleController(ModuleController::DEFAULT, null, true);
$mobileDetect = new MobileDetect();
$mode = (new Mode())->determineRunMode(false, $module, $server, $mobileDetect);
@ -232,7 +232,7 @@ class ModeTest extends MockedTest
public function testIsNotBackend()
{
$server = [];
$module = new Module(Module::DEFAULT, Module::DEFAULT_CLASS, [], false);
$module = new ModuleController(ModuleController::DEFAULT, null, false);
$mobileDetect = new MobileDetect();
$mode = (new Mode())->determineRunMode(false, $module, $server, $mobileDetect);
@ -250,7 +250,7 @@ class ModeTest extends MockedTest
'HTTP_X_REQUESTED_WITH' => 'xmlhttprequest',
];
$module = new Module(Module::DEFAULT, Module::DEFAULT_CLASS, [], false);
$module = new ModuleController(ModuleController::DEFAULT, null, false);
$mobileDetect = new MobileDetect();
$mode = (new Mode())->determineRunMode(true, $module, $server, $mobileDetect);
@ -264,7 +264,7 @@ class ModeTest extends MockedTest
public function testIsNotAjax()
{
$server = [];
$module = new Module(Module::DEFAULT, Module::DEFAULT_CLASS, [], false);
$module = new ModuleController(ModuleController::DEFAULT, null, false);
$mobileDetect = new MobileDetect();
$mode = (new Mode())->determineRunMode(true, $module, $server, $mobileDetect);
@ -278,7 +278,7 @@ class ModeTest extends MockedTest
public function testIsMobileIsTablet()
{
$server = [];
$module = new Module(Module::DEFAULT, Module::DEFAULT_CLASS, [], false);
$module = new ModuleController(ModuleController::DEFAULT, null, false);
$mobileDetect = Mockery::mock(MobileDetect::class);
$mobileDetect->shouldReceive('isMobile')->andReturn(true);
$mobileDetect->shouldReceive('isTablet')->andReturn(true);
@ -296,7 +296,7 @@ class ModeTest extends MockedTest
public function testIsNotMobileIsNotTablet()
{
$server = [];
$module = new Module(Module::DEFAULT, Module::DEFAULT_CLASS, [], false);
$module = new ModuleController(ModuleController::DEFAULT, null, false);
$mobileDetect = Mockery::mock(MobileDetect::class);
$mobileDetect->shouldReceive('isMobile')->andReturn(false);
$mobileDetect->shouldReceive('isTablet')->andReturn(false);

View file

@ -21,6 +21,7 @@
namespace Friendica\Test\src\App;
use Dice\Dice;
use Friendica\App;
use Friendica\Core\Cache\Capability\ICanCache;
use Friendica\Core\Config\Capability\IManageConfigValues;
@ -32,13 +33,13 @@ use Friendica\Module\WellKnown\HostMeta;
use Friendica\Test\DatabaseTest;
use Mockery;
class ModuleTest extends DatabaseTest
class ModuleControllerTest extends DatabaseTest
{
private function assertModule(array $assert, App\Module $module)
private function assertModule(array $assert, App\ModuleController $module)
{
self::assertEquals($assert['isBackend'], $module->isBackend());
self::assertEquals($assert['name'], $module->getName());
self::assertEquals($assert['class'], $module->getClassName());
self::assertEquals($assert['class'], $module->getModule());
}
/**
@ -46,23 +47,27 @@ class ModuleTest extends DatabaseTest
*/
public function testDefault()
{
$module = new App\Module();
$module = new App\ModuleController();
$defaultClass = App\ModuleController::DEFAULT_CLASS;
self::assertModule([
'isBackend' => false,
'name' => App\Module::DEFAULT,
'class' => App\Module::DEFAULT_CLASS,
'name' => App\ModuleController::DEFAULT,
'class' => new $defaultClass(),
], $module);
}
public function dataModuleName()
{
$defaultClass = App\ModuleController::DEFAULT_CLASS;
return [
'default' => [
'assert' => [
'isBackend' => false,
'name' => 'network',
'class' => App\Module::DEFAULT_CLASS,
'class' => new $defaultClass(),
],
'args' => new App\Arguments('network/data/in',
'network/data/in',
@ -73,7 +78,7 @@ class ModuleTest extends DatabaseTest
'assert' => [
'isBackend' => false,
'name' => 'with_strike_and_point',
'class' => App\Module::DEFAULT_CLASS,
'class' => new $defaultClass(),
],
'args' => new App\Arguments('with-strike.and-point/data/in',
'with-strike.and-point/data/in',
@ -83,35 +88,35 @@ class ModuleTest extends DatabaseTest
'withNothing' => [
'assert' => [
'isBackend' => false,
'name' => App\Module::DEFAULT,
'class' => App\Module::DEFAULT_CLASS,
'name' => App\ModuleController::DEFAULT,
'class' => new $defaultClass(),
],
'args' => new App\Arguments(),
],
'withIndex' => [
'assert' => [
'isBackend' => false,
'name' => App\Module::DEFAULT,
'class' => App\Module::DEFAULT_CLASS,
'name' => App\ModuleController::DEFAULT,
'class' => new $defaultClass(),
],
'args' => new App\Arguments(),
],
'withBackendMod' => [
'assert' => [
'isBackend' => true,
'name' => App\Module::BACKEND_MODULES[0],
'class' => App\Module::DEFAULT_CLASS,
'name' => App\ModuleController::BACKEND_MODULES[0],
'class' => new $defaultClass(),
],
'args' => new App\Arguments(App\Module::BACKEND_MODULES[0] . '/data/in',
App\Module::BACKEND_MODULES[0] . '/data/in',
[App\Module::BACKEND_MODULES[0], 'data', 'in'],
'args' => new App\Arguments(App\ModuleController::BACKEND_MODULES[0] . '/data/in',
App\ModuleController::BACKEND_MODULES[0] . '/data/in',
[App\ModuleController::BACKEND_MODULES[0], 'data', 'in'],
3),
],
'withFirefoxApp' => [
'assert' => [
'isBackend' => false,
'name' => 'login',
'class' => App\Module::DEFAULT_CLASS,
'class' => new $defaultClass(),
],
'args' => new App\Arguments('users/sign_in',
'users/sign_in',
@ -128,7 +133,7 @@ class ModuleTest extends DatabaseTest
*/
public function testModuleName(array $assert, App\Arguments $args)
{
$module = (new App\Module())->determineModule($args);
$module = (new App\ModuleController())->determineName($args);
self::assertModule($assert, $module);
}
@ -137,28 +142,32 @@ class ModuleTest extends DatabaseTest
{
return [
'default' => [
'assert' => App\Module::DEFAULT_CLASS,
'name' => App\Module::DEFAULT,
'command' => App\Module::DEFAULT,
'assert' => App\ModuleController::DEFAULT_CLASS,
'name' => App\ModuleController::DEFAULT,
'command' => App\ModuleController::DEFAULT,
'privAdd' => false,
'args' => [],
],
'legacy' => [
'assert' => LegacyModule::class,
'name' => 'display',
'command' => 'display/test/it',
'privAdd' => false,
'args' => [__DIR__ . '/../../datasets/legacy/legacy.php'],
],
'new' => [
'assert' => HostMeta::class,
'not_required',
'command' => '.well-known/host-meta',
'privAdd' => false,
'args' => [],
],
'404' => [
'assert' => PageNotFound::class,
'name' => 'invalid',
'command' => 'invalid',
'privAdd' => false,
'args' => [],
]
];
}
@ -168,7 +177,7 @@ class ModuleTest extends DatabaseTest
*
* @dataProvider dataModuleClass
*/
public function testModuleClass($assert, string $name, string $command, bool $privAdd)
public function testModuleClass($assert, string $name, string $command, bool $privAdd, array $args)
{
$config = Mockery::mock(IManageConfigValues::class);
$config->shouldReceive('get')->with('config', 'private_addons', false)->andReturn($privAdd)->atMost()->once();
@ -187,9 +196,13 @@ class ModuleTest extends DatabaseTest
$router = (new App\Router([], __DIR__ . '/../../../static/routes.config.php', $l10n, $cache, $lock));
$module = (new App\Module($name))->determineClass(new App\Arguments('', $command), $router, $config);
$dice = Mockery::mock(Dice::class);
self::assertEquals($assert, $module->getClassName());
$dice->shouldReceive('create')->andReturn(new $assert(...$args));
$module = (new App\ModuleController($name))->determineClass(new App\Arguments('', $command), $router, $config, $dice);
self::assertEquals($assert, $module->getModule()->getClassName());
}
/**
@ -197,9 +210,9 @@ class ModuleTest extends DatabaseTest
*/
public function testImmutable()
{
$module = new App\Module();
$module = new App\ModuleController();
$moduleNew = $module->determineModule(new App\Arguments());
$moduleNew = $module->determineName(new App\Arguments());
self::assertNotSame($moduleNew, $module);
}

View file

@ -67,14 +67,16 @@ class NotificationTest extends ApiTest
</notes>
XML;
Notification::rawContent(['extension' => 'xml']);
$notification = new Notification(['extension' => 'xml']);
$notification->rawContent();
self::assertXmlStringEqualsXmlString($assertXml, ApiResponseDouble::getOutput());
}
public function testWithJsonResult()
{
Notification::rawContent(['parameter' => 'json']);
$notification = new Notification(['parameter' => 'json']);
$notification->rawContent();
$result = json_encode(ApiResponseDouble::getOutput());

View file

@ -30,7 +30,7 @@ class DeleteTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
Delete::rawContent();
(new Delete())->rawContent();
}
public function testWithoutAuthenticatedUser()
@ -41,7 +41,7 @@ class DeleteTest extends ApiTest
public function testWrong()
{
$this->expectException(BadRequestException::class);
Delete::rawContent(['photo_id' => 1]);
(new Delete(['photo_id' => 1]))->rawContent();
}
public function testWithCorrectPhotoId()

View file

@ -30,13 +30,13 @@ class DeleteTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
Delete::rawContent();
(new Delete())->rawContent();
}
public function testWrong()
{
$this->expectException(BadRequestException::class);
Delete::rawContent(['album' => 'album_name']);
(new Delete(['album' => 'album_name']))->rawContent();
}
public function testValid()

View file

@ -30,19 +30,19 @@ class UpdateTest extends ApiTest
public function testEmpty()
{
$this->expectException(BadRequestException::class);
Update::rawContent();
(new Update())->rawContent();
}
public function testTooFewArgs()
{
$this->expectException(BadRequestException::class);
Update::rawContent(['album' => 'album_name']);
(new Update(['album' => 'album_name']))->rawContent();
}
public function testWrongUpdate()
{
$this->expectException(BadRequestException::class);
Update::rawContent(['album' => 'album_name', 'album_new' => 'album_name']);
(new Update(['album' => 'album_name', 'album_new' => 'album_name']))->rawContent();
}
public function testWithoutAuthenticatedUser()

View file

@ -10,7 +10,8 @@ class VersionTest extends ApiTest
{
public function test()
{
Version::rawContent(['extension' => 'json']);
$version = new Version(['extension' => 'json']);
$version->rawContent();
$result = json_decode(ApiResponseDouble::getOutput());

View file

@ -10,14 +10,16 @@ class TestTest extends ApiTest
{
public function testJson()
{
Test::rawContent(['extension' => 'json']);
$test = new Test(['extension' => 'json']);
$test->rawContent();
self::assertEquals('"ok"', ApiResponseDouble::getOutput());
}
public function testXml()
{
Test::rawContent(['extension' => 'xml']);
$test = new Test(['extension' => 'xml']);
$test->rawContent();
self::assertxml(ApiResponseDouble::getOutput(), 'ok');
}

View file

@ -10,7 +10,8 @@ class RateLimitStatusTest extends ApiTest
{
public function testWithJson()
{
RateLimitStatus::rawContent(['extension' => 'json']);
$rateLimitStatus = new RateLimitStatus(['extension' => 'json']);
$rateLimitStatus->rawContent();
$result = json_decode(ApiResponseDouble::getOutput());
@ -21,7 +22,8 @@ class RateLimitStatusTest extends ApiTest
public function testWithXml()
{
RateLimitStatus::rawContent(['extension' => 'xml']);
$rateLimitStatus = new RateLimitStatus(['extension' => 'xml']);
$rateLimitStatus->rawContent();
self::assertXml(ApiResponseDouble::getOutput(), 'hash');
}

View file

@ -10,7 +10,8 @@ class SavedSearchesTest extends ApiTest
{
public function test()
{
SavedSearches::rawContent(['extension' => 'json']);
$savedSearch = new SavedSearches(['extension' => 'json']);
$savedSearch->rawContent();
$result = json_decode(ApiResponseDouble::getOutput());