Zwei fehlende Pruefungen aus der Nachbesserung nachgezogen
owner und admin teilen sich dieselbe Nextcloud-Gruppe (admin) — richtig geloest durch array_unique plus Zielausschluss, aber bislang ungeprueft: ein Rollenwechsel nach admin darf group:removeuser admin nie auslösen. Und eine Instanz ohne Host muss false liefern, ohne einen einzigen Befehl abzusetzen. Beide Mutationsproben im Fix-Bericht dokumentiert, inklusive einer ehrlich vermerkten Einschraenkung: der host===null-Teil der Waechterbedingung in run() ist fuer sich genommen nicht unabhaengig von PHPs eigener Typpruefung beweisbar, weil ProxmoxClient::forHost() ohnehin einen TypeError wirft, den derselbe catch(Throwable) faengt. Der vmid-Teil derselben Bedingung ist es sehr wohl, empirisch bestaetigt.feat/versandtakt
parent
4023a0939c
commit
e1052f6c4e
|
|
@ -83,6 +83,35 @@ it('LOESCHT den eigenen Speicherplatz, wenn readonly verlassen wird', function (
|
|||
->and($befehle)->not->toContain('0 B');
|
||||
});
|
||||
|
||||
it('nimmt admin nicht kurz aus der eigenen Gruppe, wenn owner und admin auf denselben Namen zeigen', function () {
|
||||
// owner und admin teilen sich dieselbe Nextcloud-Gruppe (admin). Ohne
|
||||
// array_unique liefe hier group:removeuser admin VOR group:adduser admin
|
||||
// — der Benutzer fiele kurz aus genau der Gruppe heraus, in die er
|
||||
// gerade soll.
|
||||
[$pve, $instance] = gastBereit();
|
||||
$sitz = Seat::factory()->create(['role' => 'admin', 'nc_username' => 'anna@firma.tld']);
|
||||
|
||||
app(NextcloudUsers::class)->applyRole($instance, $sitz);
|
||||
|
||||
$befehle = implode("\n", $pve->guestCommands);
|
||||
|
||||
expect($befehle)->not->toContain("group:removeuser 'admin'")
|
||||
->and($befehle)->toContain("group:adduser 'admin'");
|
||||
});
|
||||
|
||||
it('laesst eine Instanz ohne Host unangetastet', function () {
|
||||
// run() steigt vor dem Verbindungsaufbau aus, wenn es keinen Host gibt —
|
||||
// es darf dabei kein einziger Befehl abgesetzt werden, denn es gibt
|
||||
// nichts, worueber forHost() eine Verbindung aufbauen koennte.
|
||||
$pve = new FakeProxmoxClient;
|
||||
app()->instance(ProxmoxClient::class, $pve);
|
||||
$instance = Instance::factory()->create(['status' => 'active', 'vmid' => 201, 'host_id' => null]);
|
||||
$sitz = Seat::factory()->create(['nc_username' => 'anna@firma.tld']);
|
||||
|
||||
expect(app(NextcloudUsers::class)->applyRole($instance, $sitz))->toBeFalse()
|
||||
->and($pve->guestCommands)->toBe([]);
|
||||
});
|
||||
|
||||
it('wirft Sitzungen beim Sperren SOFORT hinaus', function () {
|
||||
// user:disable allein laesst laufende Sitzungen bis zu fuenf Minuten
|
||||
// weiterleben. Bei einem Mitarbeiter, der gerade gegangen ist, sind fuenf
|
||||
|
|
|
|||
Loading…
Reference in New Issue