diff --git a/tests/Feature/Nextcloud/NextcloudUsersTest.php b/tests/Feature/Nextcloud/NextcloudUsersTest.php index 1702f69..35ef810 100644 --- a/tests/Feature/Nextcloud/NextcloudUsersTest.php +++ b/tests/Feature/Nextcloud/NextcloudUsersTest.php @@ -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