Merge remote-tracking branch 'upstream/develop' into api4
This commit is contained in:
commit
b67c10812a
272 changed files with 989 additions and 963 deletions
6
tests/datasets/legacy/legacy.php
Normal file
6
tests/datasets/legacy/legacy.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
function legacy_init()
|
||||
{
|
||||
// I don't do nothing
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue