label()); self::assertSame('203.0.113.10', $event->getIpAddress()); self::assertSame('device-a', $event->getDeviceFingerprint()); self::assertSame('rule-a', $event->getRuleId()); self::assertSame(FirewallRuleObject::SCOPE_TENANT, $event->getRuleScope()); self::assertSame('Blocked by policy', $event->getReason()); self::assertSame('tenant-a', $event->tenantIdentifier()); self::assertSame('identity-a', $event->actorIdentity()); self::assertSame(SecurityEventSeverity::WARNING, $event->getSeverity()); } #[Test] #[TestDox('Access denial rejects incomplete rule context')] public function rejectsIncompleteRuleContext(): void { foreach ([ ['', 'rule-a', FirewallRuleObject::SCOPE_TENANT], ['203.0.113.10', '', FirewallRuleObject::SCOPE_TENANT], ['203.0.113.10', 'rule-a', 'unknown'], ] as $arguments) { try { new AccessDeniedEvent(...$arguments); self::fail('Incomplete access-denial context was accepted.'); } catch (\InvalidArgumentException) { $this->addToAssertionCount(1); } } } }