refactor(security): add typed brute-force detection event
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -11,6 +11,7 @@ use KTXC\Models\Firewall\FirewallRuleObject;
|
||||
use KTXC\Models\Firewall\FirewallLogObject;
|
||||
use KTXC\Models\Tenant\TenantConfiguration;
|
||||
use KTXC\Security\Event\AuthenticationFailedEvent;
|
||||
use KTXC\Security\Event\BruteForceDetectedEvent;
|
||||
use KTXC\Service\FirewallService;
|
||||
use KTXC\Service\FirewallRuleCache;
|
||||
use KTXC\Service\FirewallRuleManager;
|
||||
@@ -496,13 +497,18 @@ class FirewallServiceTest extends TestCase
|
||||
|
||||
$publishedTenants = [];
|
||||
$lifecycleOrigin = null;
|
||||
$bruteForceEvent = null;
|
||||
$this->events->expects($this->exactly(3))
|
||||
->method('dispatch')
|
||||
->willReturnCallback(static function (\KTXF\Event\Event $event) use (
|
||||
&$publishedTenants,
|
||||
&$lifecycleOrigin
|
||||
&$lifecycleOrigin,
|
||||
&$bruteForceEvent,
|
||||
): void {
|
||||
$publishedTenants[] = $event->getTenantId();
|
||||
if ($event instanceof BruteForceDetectedEvent) {
|
||||
$bruteForceEvent = $event;
|
||||
}
|
||||
if ($event->getName() === \KTXC\Security\Event\SecurityEvent::FIREWALL_RULE_CREATED) {
|
||||
$lifecycleOrigin = $event->get('origin');
|
||||
}
|
||||
@@ -512,6 +518,10 @@ class FirewallServiceTest extends TestCase
|
||||
$this->service->handleAuthFailure($event);
|
||||
|
||||
self::assertSame(['tenant-event', 'tenant-event', 'tenant-event'], $publishedTenants);
|
||||
self::assertInstanceOf(BruteForceDetectedEvent::class, $bruteForceEvent);
|
||||
self::assertSame('203.0.113.10', $bruteForceEvent->getIpAddress());
|
||||
self::assertSame(5, $bruteForceEvent->getFailureCount());
|
||||
self::assertSame(300, $bruteForceEvent->getWindowSeconds());
|
||||
self::assertSame(FirewallRuleManager::ORIGIN_AUTOMATIC, $lifecycleOrigin);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user