protected $helpOptions = [];
protected $customHelpOptions = ['h', 'help', '?'];
- protected $subConsoles = [
- 'blockedservers' => __NAMESPACE__ . '\Console\BlockedServers',
- 'cache' => __NAMESPACE__ . '\Console\Cache',
- 'config' => __NAMESPACE__ . '\Console\Config',
- 'createdoxygen' => __NAMESPACE__ . '\Console\CreateDoxygen',
- 'docbloxerrorchecker' => __NAMESPACE__ . '\Console\DocBloxErrorChecker',
- 'dbstructure' => __NAMESPACE__ . '\Console\DatabaseStructure',
- 'extract' => __NAMESPACE__ . '\Console\Extract',
- 'globalcommunityblock' => __NAMESPACE__ . '\Console\GlobalCommunityBlock',
- 'globalcommunitysilence' => __NAMESPACE__ . '\Console\GlobalCommunitySilence',
- 'archivecontact' => __NAMESPACE__ . '\Console\ArchiveContact',
- 'autoinstall' => __NAMESPACE__ . '\Console\AutomaticInstallation',
- 'maintenance' => __NAMESPACE__ . '\Console\Maintenance',
- 'newpassword' => __NAMESPACE__ . '\Console\NewPassword',
- 'php2po' => __NAMESPACE__ . '\Console\PhpToPo',
- 'po2php' => __NAMESPACE__ . '\Console\PoToPhp',
- 'typo' => __NAMESPACE__ . '\Console\Typo',
- 'postupdate' => __NAMESPACE__ . '\Console\PostUpdate',
- 'storage' => __NAMESPACE__ . '\Console\Storage',
- ];
-
protected function getHelp()
{
$help = <<<HELP
Usage: bin/console [--version] [-h|--help|-?] <command> [<args>] [-v]
Commands:
- blockedservers Manage blocked servers
cache Manage node cache
config Edit site config
createdoxygen Generate Doxygen headers
po2php Generate a strings.php file from a messages.po file
typo Checks for parse errors in Friendica files
postupdate Execute pending post update scripts (can last days)
+ serverblock Manage blocked servers
storage Manage storage backend
Options:
return $help;
}
+ protected $subConsoles = [
+ 'cache' => __NAMESPACE__ . '\Console\Cache',
+ 'config' => __NAMESPACE__ . '\Console\Config',
+ 'createdoxygen' => __NAMESPACE__ . '\Console\CreateDoxygen',
+ 'docbloxerrorchecker' => __NAMESPACE__ . '\Console\DocBloxErrorChecker',
+ 'dbstructure' => __NAMESPACE__ . '\Console\DatabaseStructure',
+ 'extract' => __NAMESPACE__ . '\Console\Extract',
+ 'globalcommunityblock' => __NAMESPACE__ . '\Console\GlobalCommunityBlock',
+ 'globalcommunitysilence' => __NAMESPACE__ . '\Console\GlobalCommunitySilence',
+ 'archivecontact' => __NAMESPACE__ . '\Console\ArchiveContact',
+ 'autoinstall' => __NAMESPACE__ . '\Console\AutomaticInstallation',
+ 'maintenance' => __NAMESPACE__ . '\Console\Maintenance',
+ 'newpassword' => __NAMESPACE__ . '\Console\NewPassword',
+ 'php2po' => __NAMESPACE__ . '\Console\PhpToPo',
+ 'po2php' => __NAMESPACE__ . '\Console\PoToPhp',
+ 'typo' => __NAMESPACE__ . '\Console\Typo',
+ 'postupdate' => __NAMESPACE__ . '\Console\PostUpdate',
+ 'serverblock' => __NAMESPACE__ . '\Console\ServerBlock',
+ 'storage' => __NAMESPACE__ . '\Console\Storage',
+ ];
+
protected function doExecute()
{
if ($this->getOption('v')) {
+++ /dev/null
-<?php
-
-namespace Friendica\Core\Console;
-
-use Asika\SimpleConsole\CommandArgsException;
-use Asika\SimpleConsole\Console;
-use Console_Table;
-use Friendica\BaseObject;
-use Friendica\Core\Config\Configuration;
-
-/**
- * @brief Manage blocked servers
- *
- * With this tool, you can list the current blocked servers
- * or you can add / remove a blocked server from the list
- */
-class BlockedServers extends Console
-{
- const DEFAULT_REASON = 'blocked';
-
- protected $helpOptions = ['h', 'help', '?'];
-
- protected function getHelp()
- {
- $help = <<<HELP
-console blockedservers - Manage blocked servers
-Usage
- bin/console blockedservers [-h|--help|-?] [-v]
- bin/console blockedservers add <server> <reason> [-h|--help|-?] [-v]
- bin/console blockedservers remove <server> [-h|--help|-?] [-v]
-
-Description
- With this tool, you can list the current blocked servers
- or you can add / remove a blocked server from the list
-
-Options
- -h|--help|-? Show help information
- -v Show more debug information.
-HELP;
- return $help;
- }
-
- protected function doExecute()
- {
- $a = BaseObject::getApp();
-
- if (count($this->args) == 0) {
- $this->printBlockedServers($a->getConfig());
- return 0;
- }
-
- switch ($this->getArgument(0)) {
- case 'add':
- return $this->addBlockedServer($a->getConfig());
- case 'remove':
- return $this->removeBlockedServer($a->getConfig());
- default:
- throw new CommandArgsException('Unknown command.');
- break;
- }
- }
-
- /**
- * Prints the whole list of blocked domains including the reason
- *
- * @param Configuration $config
- */
- private function printBlockedServers(Configuration $config)
- {
- $table = new Console_Table();
- $table->setHeaders(['Domain', 'Reason']);
- $blocklist = $config->get('system', 'blocklist');
- foreach ($blocklist as $domain) {
- $table->addRow($domain);
- }
- $this->out($table->getTable());
- }
-
- /**
- * Adds a server to the blocked list
- *
- * @param Configuration $config
- *
- * @return int The return code (0 = success, 1 = failed)
- */
- private function addBlockedServer(Configuration $config)
- {
- if (count($this->args) < 2 || count($this->args) > 3) {
- throw new CommandArgsException('Add needs a domain and optional a reason.');
- }
-
- $domain = $this->getArgument(1);
- $reason = (count($this->args) === 3) ? $this->getArgument(2) : self::DEFAULT_REASON;
-
- $update = false;
-
- $currBlocklist = $config->get('system', 'blocklist');
- $newBlockList = [];
- foreach ($currBlocklist as $blocked) {
- if ($blocked['domain'] === $domain) {
- $update = true;
- $newBlockList[] = [
- 'domain' => $domain,
- 'reason' => $reason,
- ];
- } else {
- $newBlockList[] = $blocked;
- }
- }
-
- if (!$update) {
- $newBlockList[] = [
- 'domain' => $domain,
- 'reason' => $reason,
- ];
- }
-
- if ($config->set('system', 'blocklist', $newBlockList)) {
- if ($update) {
- $this->out(sprintf("The domain '%s' is now updated. (Reason: '%s')", $domain, $reason));
- } else {
- $this->out(sprintf("The domain '%s' is now blocked. (Reason: '%s')", $domain, $reason));
- }
- return 0;
- } else {
- $this->out(sprintf("Couldn't save '%s' as blocked server", $domain));
- return 1;
- }
- }
-
- /**
- * Removes a server from the blocked list
- *
- * @param Configuration $config
- *
- * @return int The return code (0 = success, 1 = failed)
- */
- private function removeBlockedServer(Configuration $config)
- {
- if (count($this->args) !== 2) {
- throw new CommandArgsException('Remove needs a second parameter.');
- }
-
- $domain = $this->getArgument(1);
-
- $found = false;
-
- $currBlocklist = $config->get('system', 'blocklist');
- $newBlockList = [];
- foreach ($currBlocklist as $blocked) {
- if ($blocked['domain'] === $domain) {
- $found = true;
- } else {
- $newBlockList[] = $blocked;
- }
- }
-
- if (!$found) {
- $this->out(sprintf("The domain '%s' is not blocked.", $domain));
- return 1;
- }
-
- if ($config->set('system', 'blocklist', $newBlockList)) {
- $this->out(sprintf("The domain '%s' is not more blocked", $domain));
- return 0;
- } else {
- $this->out(sprintf("Couldn't remove '%s' from blocked servers", $domain));
- return 1;
- }
- }
-}
--- /dev/null
+<?php
+
+namespace Friendica\Core\Console;
+
+use Asika\SimpleConsole\CommandArgsException;
+use Asika\SimpleConsole\Console;
+use Console_Table;
+use Friendica\BaseObject;
+use Friendica\Core\Config\Configuration;
+
+/**
+ * @brief Manage blocked servers
+ *
+ * With this tool, you can list the current blocked servers
+ * or you can add / remove a blocked server from the list
+ */
+class ServerBlock extends Console
+{
+ const DEFAULT_REASON = 'blocked';
+
+ protected $helpOptions = ['h', 'help', '?'];
+
+ protected function getHelp()
+ {
+ $help = <<<HELP
+console serverblock - Manage blocked servers
+Usage
+ bin/console serverblock [-h|--help|-?] [-v]
+ bin/console serverblock add <server> <reason> [-h|--help|-?] [-v]
+ bin/console serverblock remove <server> [-h|--help|-?] [-v]
+
+Description
+ With this tool, you can list the current blocked servers
+ or you can add / remove a blocked server from the list
+
+Options
+ -h|--help|-? Show help information
+ -v Show more debug information.
+HELP;
+ return $help;
+ }
+
+ protected function doExecute()
+ {
+ $a = BaseObject::getApp();
+
+ if (count($this->args) == 0) {
+ $this->printBlockedServers($a->getConfig());
+ return 0;
+ }
+
+ switch ($this->getArgument(0)) {
+ case 'add':
+ return $this->addBlockedServer($a->getConfig());
+ case 'remove':
+ return $this->removeBlockedServer($a->getConfig());
+ default:
+ throw new CommandArgsException('Unknown command.');
+ break;
+ }
+ }
+
+ /**
+ * Prints the whole list of blocked domains including the reason
+ *
+ * @param Configuration $config
+ */
+ private function printBlockedServers(Configuration $config)
+ {
+ $table = new Console_Table();
+ $table->setHeaders(['Domain', 'Reason']);
+ $blocklist = $config->get('system', 'blocklist');
+ foreach ($blocklist as $domain) {
+ $table->addRow($domain);
+ }
+ $this->out($table->getTable());
+ }
+
+ /**
+ * Adds a server to the blocked list
+ *
+ * @param Configuration $config
+ *
+ * @return int The return code (0 = success, 1 = failed)
+ */
+ private function addBlockedServer(Configuration $config)
+ {
+ if (count($this->args) < 2 || count($this->args) > 3) {
+ throw new CommandArgsException('Add needs a domain and optional a reason.');
+ }
+
+ $domain = $this->getArgument(1);
+ $reason = (count($this->args) === 3) ? $this->getArgument(2) : self::DEFAULT_REASON;
+
+ $update = false;
+
+ $currBlocklist = $config->get('system', 'blocklist');
+ $newBlockList = [];
+ foreach ($currBlocklist as $blocked) {
+ if ($blocked['domain'] === $domain) {
+ $update = true;
+ $newBlockList[] = [
+ 'domain' => $domain,
+ 'reason' => $reason,
+ ];
+ } else {
+ $newBlockList[] = $blocked;
+ }
+ }
+
+ if (!$update) {
+ $newBlockList[] = [
+ 'domain' => $domain,
+ 'reason' => $reason,
+ ];
+ }
+
+ if ($config->set('system', 'blocklist', $newBlockList)) {
+ if ($update) {
+ $this->out(sprintf("The domain '%s' is now updated. (Reason: '%s')", $domain, $reason));
+ } else {
+ $this->out(sprintf("The domain '%s' is now blocked. (Reason: '%s')", $domain, $reason));
+ }
+ return 0;
+ } else {
+ $this->out(sprintf("Couldn't save '%s' as blocked server", $domain));
+ return 1;
+ }
+ }
+
+ /**
+ * Removes a server from the blocked list
+ *
+ * @param Configuration $config
+ *
+ * @return int The return code (0 = success, 1 = failed)
+ */
+ private function removeBlockedServer(Configuration $config)
+ {
+ if (count($this->args) !== 2) {
+ throw new CommandArgsException('Remove needs a second parameter.');
+ }
+
+ $domain = $this->getArgument(1);
+
+ $found = false;
+
+ $currBlocklist = $config->get('system', 'blocklist');
+ $newBlockList = [];
+ foreach ($currBlocklist as $blocked) {
+ if ($blocked['domain'] === $domain) {
+ $found = true;
+ } else {
+ $newBlockList[] = $blocked;
+ }
+ }
+
+ if (!$found) {
+ $this->out(sprintf("The domain '%s' is not blocked.", $domain));
+ return 1;
+ }
+
+ if ($config->set('system', 'blocklist', $newBlockList)) {
+ $this->out(sprintf("The domain '%s' is not more blocked", $domain));
+ return 0;
+ } else {
+ $this->out(sprintf("Couldn't remove '%s' from blocked servers", $domain));
+ return 1;
+ }
+ }
+}
+++ /dev/null
-<?php
-
-namespace Friendica\Test\src\Core\Console;
-
-use Friendica\Core\Console\BlockedServers;
-
-/**
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- */
-class BlockedServersConsoleTest extends ConsoleTest
-{
- protected $defaultBlockList = [
- [
- 'domain' => 'social.nobodyhasthe.biz',
- 'reason' => 'Illegal content',
- ],
- [
- 'domain' => 'pod.ordoevangelistarum.com',
- 'reason' => 'Illegal content',
- ]
- ];
-
- protected function setUp()
- {
- parent::setUp();
-
- $this->mockApp($this->root);
- }
-
- /**
- * Test to list the default blocked servers
- */
- public function testBlockedServersList()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $txt = $this->dumpExecute($console);
-
- $output = <<<CONS
-+----------------------------+-----------------+
-| Domain | Reason |
-+----------------------------+-----------------+
-| social.nobodyhasthe.biz | Illegal content |
-| pod.ordoevangelistarum.com | Illegal content |
-+----------------------------+-----------------+
-
-
-CONS;
-
- $this->assertEquals($output, $txt);
- }
-
- /**
- * Test blockedservers add command
- */
- public function testAddBlockedServer()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $newBlockList = $this->defaultBlockList;
- $newBlockList[] = [
- 'domain' => 'testme.now',
- 'reason' => 'I like it!',
- ];
-
- $this->configMock
- ->shouldReceive('set')
- ->with('system', 'blocklist', $newBlockList)
- ->andReturn(true)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'add');
- $console->setArgument(1, 'testme.now');
- $console->setArgument(2, 'I like it!');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('The domain \'testme.now\' is now blocked. (Reason: \'I like it!\')' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers add command with the default reason
- */
- public function testAddBlockedServerWithDefaultReason()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $newBlockList = $this->defaultBlockList;
- $newBlockList[] = [
- 'domain' => 'testme.now',
- 'reason' => BlockedServers::DEFAULT_REASON,
- ];
-
- $this->configMock
- ->shouldReceive('set')
- ->with('system', 'blocklist', $newBlockList)
- ->andReturn(true)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'add');
- $console->setArgument(1, 'testme.now');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('The domain \'testme.now\' is now blocked. (Reason: \'' . BlockedServers::DEFAULT_REASON . '\')' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers add command on existed domain
- */
- public function testUpdateBlockedServer()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $newBlockList = [
- [
- 'domain' => 'social.nobodyhasthe.biz',
- 'reason' => 'Illegal content',
- ],
- [
- 'domain' => 'pod.ordoevangelistarum.com',
- 'reason' => 'Other reason',
- ]
- ];
-
- $this->configMock
- ->shouldReceive('set')
- ->with('system', 'blocklist', $newBlockList)
- ->andReturn(true)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'add');
- $console->setArgument(1, 'pod.ordoevangelistarum.com');
- $console->setArgument(2, 'Other reason');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('The domain \'pod.ordoevangelistarum.com\' is now updated. (Reason: \'Other reason\')' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers remove command
- */
- public function testRemoveBlockedServer()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $newBlockList = [
- [
- 'domain' => 'social.nobodyhasthe.biz',
- 'reason' => 'Illegal content',
- ],
- ];
-
- $this->configMock
- ->shouldReceive('set')
- ->with('system', 'blocklist', $newBlockList)
- ->andReturn(true)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'remove');
- $console->setArgument(1, 'pod.ordoevangelistarum.com');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('The domain \'pod.ordoevangelistarum.com\' is not more blocked' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers with a wrong command
- */
- public function testBlockedServersWrongCommand()
- {
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'wrongcommand');
- $txt = $this->dumpExecute($console);
-
- $this->assertStringStartsWith('[Warning] Unknown command', $txt);
- }
-
- /**
- * Test blockedservers remove with not existing domain
- */
- public function testRemoveBlockedServerNotExist()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'remove');
- $console->setArgument(1, 'not.exiting');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('The domain \'not.exiting\' is not blocked.' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers add command without argument
- */
- public function testAddBlockedServerMissingArgument()
- {
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'add');
- $txt = $this->dumpExecute($console);
-
- $this->assertStringStartsWith('[Warning] Add needs a domain and optional a reason.', $txt);
- }
-
- /**
- * Test blockedservers add command without save
- */
- public function testAddBlockedServerNoSave()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $newBlockList = $this->defaultBlockList;
- $newBlockList[] = [
- 'domain' => 'testme.now',
- 'reason' => BlockedServers::DEFAULT_REASON,
- ];
-
- $this->configMock
- ->shouldReceive('set')
- ->with('system', 'blocklist', $newBlockList)
- ->andReturn(false)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'add');
- $console->setArgument(1, 'testme.now');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('Couldn\'t save \'testme.now\' as blocked server' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers remove command without save
- */
- public function testRemoveBlockedServerNoSave()
- {
- $this->configMock
- ->shouldReceive('get')
- ->with('system', 'blocklist')
- ->andReturn($this->defaultBlockList)
- ->once();
-
- $newBlockList = [
- [
- 'domain' => 'social.nobodyhasthe.biz',
- 'reason' => 'Illegal content',
- ],
- ];
-
- $this->configMock
- ->shouldReceive('set')
- ->with('system', 'blocklist', $newBlockList)
- ->andReturn(false)
- ->once();
-
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'remove');
- $console->setArgument(1, 'pod.ordoevangelistarum.com');
- $txt = $this->dumpExecute($console);
-
- $this->assertEquals('Couldn\'t remove \'pod.ordoevangelistarum.com\' from blocked servers' . PHP_EOL, $txt);
- }
-
- /**
- * Test blockedservers remove command without argument
- */
- public function testRemoveBlockedServerMissingArgument()
- {
- $console = new BlockedServers($this->consoleArgv);
- $console->setArgument(0, 'remove');
- $txt = $this->dumpExecute($console);
-
- $this->assertStringStartsWith('[Warning] Remove needs a second parameter.', $txt);
- }
-
- /**
- * Test the blockedservers help
- */
- public function testBlockedServersHelp()
- {
- $console = new BlockedServers($this->consoleArgv);
- $console->setOption('help', true);
- $txt = $this->dumpExecute($console);
-
- $help = <<<HELP
-console blockedservers - Manage blocked servers
-Usage
- bin/console blockedservers [-h|--help|-?] [-v]
- bin/console blockedservers add <server> <reason> [-h|--help|-?] [-v]
- bin/console blockedservers remove <server> [-h|--help|-?] [-v]
-
-Description
- With this tool, you can list the current blocked servers
- or you can add / remove a blocked server from the list
-
-Options
- -h|--help|-? Show help information
- -v Show more debug information.
-
-HELP;
-
- $this->assertEquals($help, $txt);
- }
-}
--- /dev/null
+<?php
+
+namespace Friendica\Test\src\Core\Console;
+
+use Friendica\Core\Console\ServerBlock;
+
+/**
+ * @runTestsInSeparateProcesses
+ * @preserveGlobalState disabled
+ */
+class ServerBlockConsoleTest extends ConsoleTest
+{
+ protected $defaultBlockList = [
+ [
+ 'domain' => 'social.nobodyhasthe.biz',
+ 'reason' => 'Illegal content',
+ ],
+ [
+ 'domain' => 'pod.ordoevangelistarum.com',
+ 'reason' => 'Illegal content',
+ ]
+ ];
+
+ protected function setUp()
+ {
+ parent::setUp();
+
+ $this->mockApp($this->root);
+ }
+
+ /**
+ * Test to list the default blocked servers
+ */
+ public function testBlockedServersList()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $txt = $this->dumpExecute($console);
+
+ $output = <<<CONS
++----------------------------+-----------------+
+| Domain | Reason |
++----------------------------+-----------------+
+| social.nobodyhasthe.biz | Illegal content |
+| pod.ordoevangelistarum.com | Illegal content |
++----------------------------+-----------------+
+
+
+CONS;
+
+ $this->assertEquals($output, $txt);
+ }
+
+ /**
+ * Test blockedservers add command
+ */
+ public function testAddBlockedServer()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $newBlockList = $this->defaultBlockList;
+ $newBlockList[] = [
+ 'domain' => 'testme.now',
+ 'reason' => 'I like it!',
+ ];
+
+ $this->configMock
+ ->shouldReceive('set')
+ ->with('system', 'blocklist', $newBlockList)
+ ->andReturn(true)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'add');
+ $console->setArgument(1, 'testme.now');
+ $console->setArgument(2, 'I like it!');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('The domain \'testme.now\' is now blocked. (Reason: \'I like it!\')' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers add command with the default reason
+ */
+ public function testAddBlockedServerWithDefaultReason()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $newBlockList = $this->defaultBlockList;
+ $newBlockList[] = [
+ 'domain' => 'testme.now',
+ 'reason' => ServerBlock::DEFAULT_REASON,
+ ];
+
+ $this->configMock
+ ->shouldReceive('set')
+ ->with('system', 'blocklist', $newBlockList)
+ ->andReturn(true)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'add');
+ $console->setArgument(1, 'testme.now');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('The domain \'testme.now\' is now blocked. (Reason: \'' . ServerBlock::DEFAULT_REASON . '\')' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers add command on existed domain
+ */
+ public function testUpdateBlockedServer()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $newBlockList = [
+ [
+ 'domain' => 'social.nobodyhasthe.biz',
+ 'reason' => 'Illegal content',
+ ],
+ [
+ 'domain' => 'pod.ordoevangelistarum.com',
+ 'reason' => 'Other reason',
+ ]
+ ];
+
+ $this->configMock
+ ->shouldReceive('set')
+ ->with('system', 'blocklist', $newBlockList)
+ ->andReturn(true)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'add');
+ $console->setArgument(1, 'pod.ordoevangelistarum.com');
+ $console->setArgument(2, 'Other reason');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('The domain \'pod.ordoevangelistarum.com\' is now updated. (Reason: \'Other reason\')' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers remove command
+ */
+ public function testRemoveBlockedServer()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $newBlockList = [
+ [
+ 'domain' => 'social.nobodyhasthe.biz',
+ 'reason' => 'Illegal content',
+ ],
+ ];
+
+ $this->configMock
+ ->shouldReceive('set')
+ ->with('system', 'blocklist', $newBlockList)
+ ->andReturn(true)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'remove');
+ $console->setArgument(1, 'pod.ordoevangelistarum.com');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('The domain \'pod.ordoevangelistarum.com\' is not more blocked' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers with a wrong command
+ */
+ public function testBlockedServersWrongCommand()
+ {
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'wrongcommand');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertStringStartsWith('[Warning] Unknown command', $txt);
+ }
+
+ /**
+ * Test blockedservers remove with not existing domain
+ */
+ public function testRemoveBlockedServerNotExist()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'remove');
+ $console->setArgument(1, 'not.exiting');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('The domain \'not.exiting\' is not blocked.' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers add command without argument
+ */
+ public function testAddBlockedServerMissingArgument()
+ {
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'add');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertStringStartsWith('[Warning] Add needs a domain and optional a reason.', $txt);
+ }
+
+ /**
+ * Test blockedservers add command without save
+ */
+ public function testAddBlockedServerNoSave()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $newBlockList = $this->defaultBlockList;
+ $newBlockList[] = [
+ 'domain' => 'testme.now',
+ 'reason' => ServerBlock::DEFAULT_REASON,
+ ];
+
+ $this->configMock
+ ->shouldReceive('set')
+ ->with('system', 'blocklist', $newBlockList)
+ ->andReturn(false)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'add');
+ $console->setArgument(1, 'testme.now');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('Couldn\'t save \'testme.now\' as blocked server' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers remove command without save
+ */
+ public function testRemoveBlockedServerNoSave()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('system', 'blocklist')
+ ->andReturn($this->defaultBlockList)
+ ->once();
+
+ $newBlockList = [
+ [
+ 'domain' => 'social.nobodyhasthe.biz',
+ 'reason' => 'Illegal content',
+ ],
+ ];
+
+ $this->configMock
+ ->shouldReceive('set')
+ ->with('system', 'blocklist', $newBlockList)
+ ->andReturn(false)
+ ->once();
+
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'remove');
+ $console->setArgument(1, 'pod.ordoevangelistarum.com');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertEquals('Couldn\'t remove \'pod.ordoevangelistarum.com\' from blocked servers' . PHP_EOL, $txt);
+ }
+
+ /**
+ * Test blockedservers remove command without argument
+ */
+ public function testRemoveBlockedServerMissingArgument()
+ {
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setArgument(0, 'remove');
+ $txt = $this->dumpExecute($console);
+
+ $this->assertStringStartsWith('[Warning] Remove needs a second parameter.', $txt);
+ }
+
+ /**
+ * Test the blockedservers help
+ */
+ public function testBlockedServersHelp()
+ {
+ $console = new ServerBlock($this->consoleArgv);
+ $console->setOption('help', true);
+ $txt = $this->dumpExecute($console);
+
+ $help = <<<HELP
+console serverblock - Manage blocked servers
+Usage
+ bin/console serverblock [-h|--help|-?] [-v]
+ bin/console serverblock add <server> <reason> [-h|--help|-?] [-v]
+ bin/console serverblock remove <server> [-h|--help|-?] [-v]
+
+Description
+ With this tool, you can list the current blocked servers
+ or you can add / remove a blocked server from the list
+
+Options
+ -h|--help|-? Show help information
+ -v Show more debug information.
+
+HELP;
+
+ $this->assertEquals($help, $txt);
+ }
+}