Ein Durchgang fuer den Kern-Anwendungsfall: Vorlage und Zweck, Host A, Host B mit Zielbenutzer, Zusammenfassung, dann Schluessel erzeugen, Benutzer anlegen, zuweisen, Dry-Run, ausrollen und Verbindung testen. Die Vorlage Deployment-Zugang fuellt deploy, Ablaufdatum, from= und Alias vor; bei root als Ziel warnt der Assistent ausdruecklich. Die Ausfuehrung ist wiederaufnehmbar: wird mittendrin eine frische Bestaetigung fuer das Zielkonto noetig, geschieht sie in einem neuen Tab, und nichts wird doppelt angelegt. Zielkonten laufen als eigene Vorgaenge (neue Migration) und merken sich, ob sshkv den Benutzer angelegt hat - nur dann loescht ein Widerruf ihn spaeter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -118,3 +118,29 @@ describe("Zielkonto", () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe("Zielkonto als Vorgang", () => {
|
||||
it("legt an, merkt sich die Herkunft und entfernt den Benutzer wieder", async () => {
|
||||
const { prisma } = await import("@/lib/db");
|
||||
const { vorgangLaufen } = await import("./hilfen/host");
|
||||
const host = await eingerichteterHost(zielB, "ziel-b");
|
||||
const anlegen = await vorgangLaufen("ZIELKONTO_ANLEGEN", {
|
||||
hostId: host.id,
|
||||
eingabe: { benutzer: "deploy", modus: "VOLL", befehle: [] },
|
||||
});
|
||||
expect(anlegen.fehler).toBeNull();
|
||||
const konto = await prisma.zielkonto.findFirstOrThrow({ where: { hostId: host.id } });
|
||||
expect(konto).toMatchObject({ benutzername: "deploy", vonSshkvAngelegt: true, sudoModus: "VOLL" });
|
||||
expect(konto.sudoersInhalt).toContain("deploy ALL=(ALL:ALL) NOPASSWD: ALL");
|
||||
|
||||
const entfernen = await vorgangLaufen("ZIELKONTO_ENTFERNEN", {
|
||||
hostId: host.id,
|
||||
eingabe: { benutzer: "deploy" },
|
||||
});
|
||||
expect(entfernen.fehler).toBeNull();
|
||||
expect((await befehlAlsRoot(zielB, "id deploy 2>&1")).stdout).toMatch(/no such user/);
|
||||
expect(
|
||||
(await prisma.zielkonto.findFirstOrThrow({ where: { hostId: host.id } })).entferntAm,
|
||||
).not.toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user