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:
Philipp Holzer 2019-07-28 22:06:33 +02:00
parent b8a336cc0d
commit a60eb9e33d
No known key found for this signature in database
GPG key ID: D8365C3D36B77D90
20 changed files with 400 additions and 166 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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();
}
/**

View file

@ -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);