CluPilotCloud/tests/Feature/Admin/ConsoleAccessListTest.php

58 lines
2.4 KiB
PHP

<?php
use App\Models\Operator;
/**
* Was „nicht entfernbar" heisst, muss auch wirklich nicht entfernbar sein.
*
* In der Konsole standen alle Eintraege aus TRUSTED_RANGES untereinander mit
* demselben Vermerk „Management-VPN, nicht entfernbar" — auch eine Bueroadresse,
* die jemand einmal in die .env geschrieben hatte. Der Betreiber konnte sie
* damit nicht aendern und wusste nicht einmal, dass sie aus einer Datei kommt.
* Beim naechsten Umzug des Buero-Anschlusses waere das ein Aussperren gewesen.
*/
it('nennt eine von Hand eingetragene Adresse nicht unveraenderlich', function () {
config()->set('admin_access.trusted_ranges', ['10.66.0.0/24', '127.0.0.1', '62.178.50.33']);
config()->set('admin_access.structural_ranges', ['10.66.0.0/24', '127.0.0.1']);
$html = $this->actingAs(admin(), 'operator')
->get(route('admin.settings', ['tab' => 'security']))
->assertOk()
->getContent();
// Der Vermerk „nicht entfernbar" darf nicht mehr auf die Bueroadresse
// zutreffen — sie steht in der Warnzeile, mit dem Weg heraus.
expect($html)->toContain(__('admin_settings.console_env_note'))
->and($html)->toContain('62.178.50.33');
});
it('laesst die zwei strukturellen Eintraege in Ruhe', function () {
config()->set('admin_access.trusted_ranges', ['10.66.0.0/24', '127.0.0.1']);
$html = $this->actingAs(admin(), 'operator')
->get(route('admin.settings', ['tab' => 'security']))
->assertOk()
->getContent();
expect($html)->toContain(__('admin_settings.console_vpn_note'))
// Ohne handgemachte Eintraege gibt es auch nichts zu warnen.
->and($html)->not->toContain(__('admin_settings.console_env_note'));
});
it('nennt einen Host-Zugang so, wie der Host heute heisst', function () {
// Ein Zugang bekommt seinen Namen einmal beim Anlegen. Wird der Host spaeter
// umbenannt, zeigte die Liste weiter den alten: „pve-fns-1" neben einem
// Host, der laengst „fsn-01" hiess. Zwei Namen fuer dieselbe Maschine.
$host = \App\Models\Host::factory()->create(['name' => 'fsn-01']);
\App\Models\VpnPeer::factory()->create([
'host_id' => $host->id,
'name' => 'pve-fns-1',
'kind' => 'host',
]);
$html = $this->actingAs(admin(), 'operator')->get(route('admin.vpn'))->assertOk()->getContent();
expect($html)->toContain('fsn-01')
->and($html)->not->toContain('pve-fns-1');
});