]> git.mxchange.org Git - friendica.git/commitdiff
Rename BlockedServers to ServerBlock
authorPhilipp Holzer <admin@philipp.info>
Sat, 20 Apr 2019 14:40:27 +0000 (16:40 +0200)
committerPhilipp Holzer <admin@philipp.info>
Sat, 20 Apr 2019 14:40:27 +0000 (16:40 +0200)
src/Core/Console.php
src/Core/Console/BlockedServers.php [deleted file]
src/Core/Console/ServerBlock.php [new file with mode: 0644]
tests/src/Core/Console/BlockedServersConsoleTest.php [deleted file]
tests/src/Core/Console/ServerBlockConsoleTest.php [new file with mode: 0644]

index d115143e474f4e9d3fe9a33dc5a86af48735f9e1..0cc63a5913fcef016e217a9d44e927c0b27953c4 100644 (file)
@@ -13,34 +13,12 @@ class Console extends \Asika\SimpleConsole\Console
        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
@@ -58,6 +36,7 @@ Commands:
        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:
@@ -67,6 +46,27 @@ HELP;
                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')) {
diff --git a/src/Core/Console/BlockedServers.php b/src/Core/Console/BlockedServers.php
deleted file mode 100644 (file)
index cd9d212..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<?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;
-               }
-       }
-}
diff --git a/src/Core/Console/ServerBlock.php b/src/Core/Console/ServerBlock.php
new file mode 100644 (file)
index 0000000..94c97e1
--- /dev/null
@@ -0,0 +1,171 @@
+<?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;
+               }
+       }
+}
diff --git a/tests/src/Core/Console/BlockedServersConsoleTest.php b/tests/src/Core/Console/BlockedServersConsoleTest.php
deleted file mode 100644 (file)
index f33a8de..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-<?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);
-       }
-}
diff --git a/tests/src/Core/Console/ServerBlockConsoleTest.php b/tests/src/Core/Console/ServerBlockConsoleTest.php
new file mode 100644 (file)
index 0000000..512a416
--- /dev/null
@@ -0,0 +1,337 @@
+<?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);
+       }
+}