summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Security/Bruteforce/Throttler.php4
-rw-r--r--tests/lib/Security/Bruteforce/CapabilitiesTest.php24
2 files changed, 26 insertions, 2 deletions
diff --git a/lib/private/Security/Bruteforce/Throttler.php b/lib/private/Security/Bruteforce/Throttler.php
index 7b98b3d8288..61e18088e94 100644
--- a/lib/private/Security/Bruteforce/Throttler.php
+++ b/lib/private/Security/Bruteforce/Throttler.php
@@ -227,6 +227,10 @@ class Throttler {
* @return int
*/
public function getAttempts(string $ip, string $action = '', float $maxAgeHours = 12): int {
+ if ($ip === '') {
+ return 0;
+ }
+
$ipAddress = new IpAddress($ip);
if ($this->isIPWhitelisted((string)$ipAddress)) {
return 0;
diff --git a/tests/lib/Security/Bruteforce/CapabilitiesTest.php b/tests/lib/Security/Bruteforce/CapabilitiesTest.php
index 16c2b2caf15..cd43d94f8cb 100644
--- a/tests/lib/Security/Bruteforce/CapabilitiesTest.php
+++ b/tests/lib/Security/Bruteforce/CapabilitiesTest.php
@@ -40,8 +40,6 @@ class CapabilitiesTest extends TestCase {
parent::setUp();
$this->request = $this->createMock(IRequest::class);
- $this->request->method('getRemoteAddress')
- ->willReturn('10.10.10.10');
$this->throttler = $this->createMock(Throttler::class);
@@ -57,6 +55,9 @@ class CapabilitiesTest extends TestCase {
->with('10.10.10.10')
->willReturn(42);
+ $this->request->method('getRemoteAddress')
+ ->willReturn('10.10.10.10');
+
$expected = [
'bruteforce' => [
'delay' => 42
@@ -66,4 +67,23 @@ class CapabilitiesTest extends TestCase {
$this->assertEquals($expected, $result);
}
+
+ public function testGetCapabilitiesOnCli() {
+ $this->throttler->expects($this->atLeastOnce())
+ ->method('getDelay')
+ ->with('')
+ ->willReturn(0);
+
+ $this->request->method('getRemoteAddress')
+ ->willReturn('');
+
+ $expected = [
+ 'bruteforce' => [
+ 'delay' => 0
+ ]
+ ];
+ $result = $this->capabilities->getCapabilities();
+
+ $this->assertEquals($expected, $result);
+ }
}