mirror of
https://github.com/friendica/friendica
synced 2025-04-26 00:30:12 +00:00
Use DICE for Console
- Use Friendica\Core\Console as Controller for DI-library - Refactor every console command to use DICE (when possible) - Adjusting tests
This commit is contained in:
parent
b8a336cc0d
commit
a60eb9e33d
20 changed files with 400 additions and 166 deletions
|
@ -2,24 +2,28 @@
|
|||
|
||||
namespace Friendica\Test\src\Console;
|
||||
|
||||
use Dice\Dice;
|
||||
use Friendica\App;
|
||||
use Friendica\BaseObject;
|
||||
use Friendica\Console\AutomaticInstallation;
|
||||
use Friendica\Core\Config\Cache\ConfigCache;
|
||||
use Friendica\Core\Installer;
|
||||
use Friendica\Core\L10n\L10n;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Test\Util\DBAMockTrait;
|
||||
use Friendica\Test\Util\DBStructureMockTrait;
|
||||
use Friendica\Test\Util\RendererMockTrait;
|
||||
use Friendica\Test\Util\VFSTrait;
|
||||
use Friendica\Util\BaseURL;
|
||||
use Friendica\Util\Logger\VoidLogger;
|
||||
use Mockery\MockInterface;
|
||||
use org\bovigo\vfs\vfsStream;
|
||||
use org\bovigo\vfs\vfsStreamFile;
|
||||
|
||||
/**
|
||||
* @requires PHP 7.0
|
||||
*/
|
||||
class AutomaticInstallationConsoleTest extends ConsoleTest
|
||||
{
|
||||
use VFSTrait;
|
||||
use DBAMockTrait;
|
||||
use DBStructureMockTrait;
|
||||
use RendererMockTrait;
|
||||
|
@ -38,28 +42,49 @@ class AutomaticInstallationConsoleTest extends ConsoleTest
|
|||
*/
|
||||
private $configCache;
|
||||
|
||||
/**
|
||||
* @var App\Mode
|
||||
*/
|
||||
private $appMode;
|
||||
|
||||
/**
|
||||
* @var Database
|
||||
*/
|
||||
private $dba;
|
||||
|
||||
/**
|
||||
* @var Dice|MockInterface
|
||||
*/
|
||||
private $dice;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->markTestSkipped('Needs class \'Installer\' as constructing argument for console tests');
|
||||
|
||||
parent::setUp();
|
||||
|
||||
$this->setUpVfsDir();;
|
||||
|
||||
if ($this->root->hasChild('config' . DIRECTORY_SEPARATOR . 'local.config.php')) {
|
||||
$this->root->getChild('config')
|
||||
->removeChild('local.config.php');
|
||||
}
|
||||
$this->dice = \Mockery::mock(Dice::class)->makePartial();
|
||||
|
||||
$l10nMock = \Mockery::mock(L10n::class);
|
||||
$l10nMock->shouldReceive('t')->andReturnUsing(function ($args) { return $args; });
|
||||
\Friendica\Core\L10n::init($l10nMock);
|
||||
|
||||
$this->dice->shouldReceive('create')
|
||||
->with(L10n::class)
|
||||
->andReturn($l10nMock);
|
||||
|
||||
BaseObject::setDependencyInjection($this->dice);
|
||||
|
||||
$this->configCache = new ConfigCache();
|
||||
$this->configCache->set('system', 'basepath', $this->root->url());
|
||||
$this->configCache->set('config', 'php_path', trim(shell_exec('which php')));
|
||||
$this->configCache->set('system', 'theme', 'smarty3');
|
||||
|
||||
$this->mockApp($this->root, true);
|
||||
|
||||
$this->configMock->shouldReceive('set')->andReturnUsing(function ($cat, $key, $value) {
|
||||
if ($key !== 'basepath') {
|
||||
return $this->configCache->set($cat, $key, $value);
|
||||
|
|
|
@ -2,35 +2,38 @@
|
|||
|
||||
namespace Friendica\Test\src\Console;
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\App\Mode;
|
||||
use Friendica\Console\Config;
|
||||
use Friendica\Core\Config\Configuration;
|
||||
use Mockery\MockInterface;
|
||||
|
||||
/**
|
||||
* @runTestsInSeparateProcesses
|
||||
* @preserveGlobalState disabled
|
||||
* @requires PHP 7.0
|
||||
*/
|
||||
class ConfigConsoleTest extends ConsoleTest
|
||||
{
|
||||
/**
|
||||
* @var App\Mode|MockInterface $appMode
|
||||
*/
|
||||
private $appMode;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->mockApp($this->root);
|
||||
|
||||
\Mockery::getConfiguration()->setConstantsMap([
|
||||
Mode::class => [
|
||||
'DBCONFIGAVAILABLE' => 0
|
||||
]
|
||||
]);
|
||||
|
||||
$this->mode
|
||||
->shouldReceive('has')
|
||||
->andReturn(true);
|
||||
$this->appMode = \Mockery::mock(App\Mode::class);
|
||||
$this->appMode->shouldReceive('has')
|
||||
->andReturn(true);
|
||||
|
||||
$this->configMock = \Mockery::mock(Configuration::class);
|
||||
}
|
||||
|
||||
function testSetGetKeyValue() {
|
||||
function testSetGetKeyValue()
|
||||
{
|
||||
$this->configMock
|
||||
->shouldReceive('set')
|
||||
->with('config', 'test', 'now')
|
||||
|
@ -42,7 +45,7 @@ class ConfigConsoleTest extends ConsoleTest
|
|||
->andReturn('now')
|
||||
->twice();
|
||||
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'config');
|
||||
$console->setArgument(1, 'test');
|
||||
$console->setArgument(2, 'now');
|
||||
|
@ -55,7 +58,7 @@ class ConfigConsoleTest extends ConsoleTest
|
|||
->andReturn('now')
|
||||
->once();
|
||||
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
|
||||
$console->setArgument(0, 'config');
|
||||
$console->setArgument(1, 'test');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -67,7 +70,7 @@ class ConfigConsoleTest extends ConsoleTest
|
|||
->andReturn(null)
|
||||
->once();
|
||||
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'config');
|
||||
$console->setArgument(1, 'test');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -82,7 +85,7 @@ class ConfigConsoleTest extends ConsoleTest
|
|||
->andReturn($testArray)
|
||||
->once();
|
||||
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'config');
|
||||
$console->setArgument(1, 'test');
|
||||
$console->setArgument(2, 'now');
|
||||
|
@ -92,7 +95,7 @@ class ConfigConsoleTest extends ConsoleTest
|
|||
}
|
||||
|
||||
function testTooManyArguments() {
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'config');
|
||||
$console->setArgument(1, 'test');
|
||||
$console->setArgument(2, 'it');
|
||||
|
@ -109,7 +112,7 @@ class ConfigConsoleTest extends ConsoleTest
|
|||
->with('test', 'it')
|
||||
->andReturn('now')
|
||||
->once();
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'test');
|
||||
$console->setArgument(1, 'it');
|
||||
$console->setOption('v', 1);
|
||||
|
@ -142,7 +145,7 @@ CONF;
|
|||
->with('test', 'it')
|
||||
->andReturn(NULL)
|
||||
->once();
|
||||
$console = new Config();
|
||||
$console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
|
||||
$console->setArgument(0, 'test');
|
||||
$console->setArgument(1, 'it');
|
||||
$console->setArgument(2, 'now');
|
||||
|
@ -183,7 +186,7 @@ Options
|
|||
-v Show more debug information.
|
||||
|
||||
HELP;
|
||||
$console = new Config($this->consoleArgv);
|
||||
$console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
|
||||
$console->setOption('help', true);
|
||||
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
|
|
@ -4,15 +4,10 @@ namespace Friendica\Test\src\Console;
|
|||
|
||||
use Asika\SimpleConsole\Console;
|
||||
use Friendica\Test\MockedTest;
|
||||
use Friendica\Test\Util\AppMockTrait;
|
||||
use Friendica\Test\Util\Intercept;
|
||||
use Friendica\Test\Util\VFSTrait;
|
||||
|
||||
abstract class ConsoleTest extends MockedTest
|
||||
{
|
||||
use VFSTrait;
|
||||
use AppMockTrait;
|
||||
|
||||
/**
|
||||
* @var array The default argv for a Console Instance
|
||||
*/
|
||||
|
@ -23,8 +18,6 @@ abstract class ConsoleTest extends MockedTest
|
|||
parent::setUp();
|
||||
|
||||
Intercept::setUp();
|
||||
|
||||
$this->setUpVfsDir();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,11 +3,8 @@
|
|||
namespace Friendica\Test\src\Console;
|
||||
|
||||
use Friendica\Console\ServerBlock;
|
||||
use Friendica\Core\Config\Configuration;
|
||||
|
||||
/**
|
||||
* @runTestsInSeparateProcesses
|
||||
* @preserveGlobalState disabled
|
||||
*/
|
||||
class ServerBlockConsoleTest extends ConsoleTest
|
||||
{
|
||||
protected $defaultBlockList = [
|
||||
|
@ -25,7 +22,7 @@ class ServerBlockConsoleTest extends ConsoleTest
|
|||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->mockApp($this->root);
|
||||
$this->configMock = \Mockery::mock(Configuration::class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,11 +32,11 @@ class ServerBlockConsoleTest extends ConsoleTest
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
||||
$output = <<<CONS
|
||||
|
@ -63,7 +60,7 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
|
@ -79,7 +76,7 @@ CONS;
|
|||
->andReturn(true)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'add');
|
||||
$console->setArgument(1, 'testme.now');
|
||||
$console->setArgument(2, 'I like it!');
|
||||
|
@ -95,7 +92,7 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
|
@ -111,7 +108,7 @@ CONS;
|
|||
->andReturn(true)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'add');
|
||||
$console->setArgument(1, 'testme.now');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -126,7 +123,7 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
|
@ -147,7 +144,7 @@ CONS;
|
|||
->andReturn(true)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'add');
|
||||
$console->setArgument(1, 'pod.ordoevangelistarum.com');
|
||||
$console->setArgument(2, 'Other reason');
|
||||
|
@ -163,7 +160,7 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
|
@ -180,7 +177,7 @@ CONS;
|
|||
->andReturn(true)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'remove');
|
||||
$console->setArgument(1, 'pod.ordoevangelistarum.com');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -193,7 +190,7 @@ CONS;
|
|||
*/
|
||||
public function testBlockedServersWrongCommand()
|
||||
{
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'wrongcommand');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
||||
|
@ -207,11 +204,11 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'remove');
|
||||
$console->setArgument(1, 'not.exiting');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -224,7 +221,7 @@ CONS;
|
|||
*/
|
||||
public function testAddBlockedServerMissingArgument()
|
||||
{
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'add');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
||||
|
@ -238,7 +235,7 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
|
@ -254,7 +251,7 @@ CONS;
|
|||
->andReturn(false)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'add');
|
||||
$console->setArgument(1, 'testme.now');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -269,7 +266,7 @@ CONS;
|
|||
{
|
||||
$this->configMock
|
||||
->shouldReceive('get')
|
||||
->with('system', 'blocklist')
|
||||
->with('system', 'blocklist', [])
|
||||
->andReturn($this->defaultBlockList)
|
||||
->once();
|
||||
|
||||
|
@ -286,7 +283,7 @@ CONS;
|
|||
->andReturn(false)
|
||||
->once();
|
||||
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'remove');
|
||||
$console->setArgument(1, 'pod.ordoevangelistarum.com');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
@ -299,7 +296,7 @@ CONS;
|
|||
*/
|
||||
public function testRemoveBlockedServerMissingArgument()
|
||||
{
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setArgument(0, 'remove');
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
||||
|
@ -311,7 +308,7 @@ CONS;
|
|||
*/
|
||||
public function testBlockedServersHelp()
|
||||
{
|
||||
$console = new ServerBlock($this->consoleArgv);
|
||||
$console = new ServerBlock($this->configMock, $this->consoleArgv);
|
||||
$console->setOption('help', true);
|
||||
$txt = $this->dumpExecute($console);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue