84 lines
3.3 KiB
PHP
84 lines
3.3 KiB
PHP
<?php
|
|
|
|
use App\Livewire\Admin\HostCreate;
|
|
use App\Livewire\Admin\Hosts;
|
|
use App\Models\Operator;
|
|
use Livewire\Livewire;
|
|
|
|
beforeEach(function () {
|
|
fakeServices();
|
|
config()->set('admin_access.app_host', 'app.clupilot.com');
|
|
config()->set('provisioning.dns.platform_zone', 'clupilot.com');
|
|
});
|
|
|
|
function guidePage(string $component): \Livewire\Features\SupportTesting\Testable
|
|
{
|
|
return Livewire::actingAs(Operator::factory()->role('Owner')->create(), 'operator')->test($component);
|
|
}
|
|
|
|
/**
|
|
* Der eigentliche Fund, der diese Datei nötig gemacht hat.
|
|
*
|
|
* Die erste Fassung zeigte die Anleitung ERST NACH dem Anlegen. Ihre Schritte 1
|
|
* und 2 passieren aber beim Anbieter — Server bestellen, Rettungssystem starten
|
|
* —, und wer sie dort zum ersten Mal liest, hat den Einmal-Code schon in der
|
|
* Zwischenablage und dessen 24-Stunden-Frist läuft bereits.
|
|
*/
|
|
it('explains the whole procedure before anything is created', function () {
|
|
$page = guidePage(HostCreate::class);
|
|
|
|
// Alle sechs, als Schiene — kurze Beschriftungen, damit die Seite eine
|
|
// Seite bleibt und keine Textwand wird. Das war der zweite Fund: sechs
|
|
// Absätze übereinander beantworteten alles und zeigten nichts.
|
|
foreach (range(1, 6) as $step) {
|
|
$page->assertSee(__("hosts.takeover.s{$step}_label"));
|
|
}
|
|
|
|
// Die zwei beim Anbieter ausführlich, weil sie VOR dem Speichern erledigt
|
|
// sein müssen und nur hier erklärt werden.
|
|
$page->assertSee(__('hosts.takeover.s1_body'))
|
|
->assertSee(__('hosts.takeover.s2_body'));
|
|
});
|
|
|
|
/**
|
|
* Und schon auf der Liste, nicht erst hinter „Host hinzufügen": wer dort steht,
|
|
* hat den Server womöglich noch gar nicht bestellt — und genau das ist Schritt 1.
|
|
*/
|
|
it('offers the same procedure on the hosts list', function () {
|
|
guidePage(Hosts::class)
|
|
->assertSee(__('hosts.takeover.how_title'))
|
|
->assertSee(__('hosts.takeover.s1_title'))
|
|
->assertSee(__('hosts.takeover.s2_title'));
|
|
});
|
|
|
|
/**
|
|
* Die zwei Schritte beim Anbieter sind als solche gekennzeichnet. Ohne die
|
|
* Markierung liest sich die Liste, als könne man oben anfangen und sich
|
|
* durcharbeiten — und Schritt 2 ist dann eine halbe Stunde Wartezeit mitten
|
|
* in einem laufenden Code.
|
|
*/
|
|
it('marks the two provider steps as things to do first', function () {
|
|
guidePage(HostCreate::class)->assertSee(__('hosts.takeover.badge_before'));
|
|
});
|
|
|
|
/**
|
|
* Die Anleitung nennt die Adresse, von der geladen wird, und es muss dieselbe
|
|
* sein, die später in der Zeile steht. Zwei Fassungen davon liefen auseinander,
|
|
* und der Unterschied fiele auf einem Server auf, der schon bestellt ist.
|
|
*/
|
|
it('names the same archive address the command will use', function () {
|
|
// Auf der Liste, wo die Anleitung Auskunft gibt. Auf der Anlegen-Seite
|
|
// steht die Adresse erst NACH dem Speichern: dort ist sie Teil der
|
|
// Befehlszeile und keine Angabe für sich, und vorher wäre sie eine
|
|
// Einzelheit mehr auf einer Seite, die vier Felder ausgefüllt haben will.
|
|
guidePage(Hosts::class)->assertSee('files.clupilot.test/bootstrap.tar.gz');
|
|
});
|
|
|
|
/**
|
|
* Vor dem Anlegen gibt es keine Befehlszeile — sonst stünde dort eine, die zu
|
|
* keinem Host gehört.
|
|
*/
|
|
it('shows no command until a host exists', function () {
|
|
guidePage(HostCreate::class)->assertDontSee('--wg-private');
|
|
});
|