]> git.mxchange.org Git - friendica.git/commitdiff
Add update possibility to BlockedServers
authorPhilipp Holzer <admin@philipp.info>
Sat, 20 Apr 2019 11:24:33 +0000 (13:24 +0200)
committerPhilipp Holzer <admin@philipp.info>
Sat, 20 Apr 2019 11:24:33 +0000 (13:24 +0200)
src/Core/Console/BlockedServers.php
tests/src/Core/Console/BlockedServersConsoleTest.php

index 07c4ee62d154ca3de1abdf7170f583fc78039dc2..cd9d212984c1b94f2140b813c20f550af3811c97 100644 (file)
@@ -90,24 +90,37 @@ HELP;
                }
 
                $domain = $this->getArgument(1);
+               $reason = (count($this->args) === 3) ? $this->getArgument(2) : self::DEFAULT_REASON;
 
-               $blocklist = $config->get('system', 'blocklist');
-               foreach ($blocklist as $blocked) {
+               $update = false;
+
+               $currBlocklist = $config->get('system', 'blocklist');
+               $newBlockList = [];
+               foreach ($currBlocklist  as $blocked) {
                        if ($blocked['domain'] === $domain) {
-                               $this->out(sprintf("The domain '%s' is already blocked. (Reason: '%s')", $domain, $blocked['reason']));
-                               return 1;
+                               $update = true;
+                               $newBlockList[] = [
+                                       'domain' => $domain,
+                                       'reason' => $reason,
+                               ];
+                       } else {
+                               $newBlockList[] = $blocked;
                        }
                }
 
-               $reason = (count($this->args) === 3) ? $this->getArgument(2) : self::DEFAULT_REASON;
-
-               $blocklist[] = [
-                       'domain' => $domain,
-                       'reason' => $reason,
-               ];
+               if (!$update) {
+                       $newBlockList[] = [
+                               'domain' => $domain,
+                               'reason' => $reason,
+                       ];
+               }
 
-               if ($config->set('system', 'blocklist', $blocklist)) {
-                       $this->out(sprintf("The domain '%s' is now blocked. (Reason: '%s')", $domain, $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));
@@ -143,7 +156,7 @@ HELP;
                }
 
                if (!$found) {
-                       $this->out(sprintf("Domain '%s' is not blocked.", $domain));
+                       $this->out(sprintf("The domain '%s' is not blocked.", $domain));
                        return 1;
                }
 
index c454a14b9b849445c8448e313ee1278dcbbc2111..f33a8de31c82a20151a55ff19c7a7747874f6252 100644 (file)
@@ -116,7 +116,44 @@ CONS;
                $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);
+               $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);
        }
 
        /**
@@ -163,6 +200,25 @@ CONS;
                $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
         */