From 09cb8aea5c74ce6cafe99cbddaefcd02498e8ad3 Mon Sep 17 00:00:00 2001 From: nexxo Date: Mon, 3 Aug 2026 13:25:36 +0200 Subject: [PATCH] Fix-Runde 1: der WG-Endpunkt-Zweig der Ausnahmeliste bekommt einen Test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die drei hart verdrahteten Adressen waren belegt, der vierte Eintrag — die eigene öffentliche Adresse aus CLUPILOT_WG_ENDPOINT — lief in der Testumgebung nie durch, weil die Variable dort leer ist. Setzt die Einstellung, prüft die Ausnahme UND die Gegenprobe am Nachbarn in derselben Zeile, damit der Test nicht bloß beweist, dass gar nichts mehr gesperrt wird. Co-Authored-By: Claude Opus 5 --- tests/Feature/Security/BlockAddressTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/Feature/Security/BlockAddressTest.php b/tests/Feature/Security/BlockAddressTest.php index 2a0454d..0d97e8e 100644 --- a/tests/Feature/Security/BlockAddressTest.php +++ b/tests/Feature/Security/BlockAddressTest.php @@ -67,3 +67,19 @@ it('haelt eine laufende Sperre nicht zweimal', function () { expect($dienst->forInstance($instance, '203.0.113.7', 10))->toBeNull() ->and(SecurityBlock::count())->toBe(1); }); + +it('sperrt niemals die eigene oeffentliche Adresse des CluPilot-Servers', function () { + // Der vierte Eintrag der Ausnahmeliste, und der einzige, der nicht hart + // verdrahtet ist. Ohne diesen Test bliebe er unbelegt — ausgerechnet der, + // der verhindert, dass sich der Server selbst aussperrt. + config()->set('provisioning.wireguard.endpoint', '203.0.113.10:51820'); + + $host = Host::factory()->create(); + + expect(app(BlockAddress::class)->forHost($host, '203.0.113.10', 999))->toBeNull() + ->and(SecurityBlock::count())->toBe(0); + + // Und die Gegenprobe, damit der Test nicht bloss beweist, dass gar nichts + // gesperrt wird: der Nachbar in derselben Zeile ist NICHT ausgenommen. + expect(app(BlockAddress::class)->forHost($host, '203.0.113.11', 999))->not->toBeNull(); +});