Add update possibility to BlockedServers

This commit is contained in:
Philipp Holzer 2019-04-20 13:24:33 +02:00
parent 7ce76d153a
commit f05f02409e
No known key found for this signature in database
GPG key ID: 517BE60E2CE5C8A5
2 changed files with 83 additions and 14 deletions

View file

@ -90,24 +90,37 @@ HELP;
} }
$domain = $this->getArgument(1); $domain = $this->getArgument(1);
$reason = (count($this->args) === 3) ? $this->getArgument(2) : self::DEFAULT_REASON;
$blocklist = $config->get('system', 'blocklist'); $update = false;
foreach ($blocklist as $blocked) {
$currBlocklist = $config->get('system', 'blocklist');
$newBlockList = [];
foreach ($currBlocklist as $blocked) {
if ($blocked['domain'] === $domain) { if ($blocked['domain'] === $domain) {
$this->out(sprintf("The domain '%s' is already blocked. (Reason: '%s')", $domain, $blocked['reason'])); $update = true;
return 1; $newBlockList[] = [
'domain' => $domain,
'reason' => $reason,
];
} else {
$newBlockList[] = $blocked;
} }
} }
$reason = (count($this->args) === 3) ? $this->getArgument(2) : self::DEFAULT_REASON; if (!$update) {
$newBlockList[] = [
'domain' => $domain,
'reason' => $reason,
];
}
$blocklist[] = [ if ($config->set('system', 'blocklist', $newBlockList)) {
'domain' => $domain, if ($update) {
'reason' => $reason, $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));
if ($config->set('system', 'blocklist', $blocklist)) { }
$this->out(sprintf("The domain '%s' is now blocked. (Reason: '%s')", $domain, $reason));
return 0; return 0;
} else { } else {
$this->out(sprintf("Couldn't save '%s' as blocked server", $domain)); $this->out(sprintf("Couldn't save '%s' as blocked server", $domain));
@ -143,7 +156,7 @@ HELP;
} }
if (!$found) { if (!$found) {
$this->out(sprintf("Domain '%s' is not blocked.", $domain)); $this->out(sprintf("The domain '%s' is not blocked.", $domain));
return 1; return 1;
} }

View file

@ -116,7 +116,44 @@ CONS;
$console->setArgument(1, 'testme.now'); $console->setArgument(1, 'testme.now');
$txt = $this->dumpExecute($console); $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); $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 * Test blockedservers add command without argument
*/ */