feat(seed): mitgelieferte Vorlagen am Schluessel erkennen (#42)
This commit was merged in pull request #42.
This commit is contained in:
@@ -354,6 +354,24 @@ describe.runIf(datenbankVerfuegbar)("Vorlagen-Austausch", () => {
|
||||
expect(await testPrisma.vorlagenVersion.count({ where: { vorlageId } })).toBe(1);
|
||||
});
|
||||
|
||||
it("gibt einer eingespielten Kopie keinen Seed-Schluessel", async () => {
|
||||
// Sonst hielte der Seed die Kopie fuer das Original und legte das Original
|
||||
// ein zweites Mal an (#021). Geprueft wird mit einem Dokument, das den
|
||||
// Schluessel ausdruecklich mitbringt - ein Angreifer oder ein Versehen
|
||||
// koennte ihn ja hineinschreiben.
|
||||
const redakteur = await redakteurAnlegen();
|
||||
const quelle = await beispielVersionAnlegen();
|
||||
const austausch = await vorlageExportieren(quelle);
|
||||
|
||||
const { vorlageId } = await vorlageImportieren(
|
||||
{ ...austausch, seedSchluessel: "pc-neuinstallation" },
|
||||
redakteur.id,
|
||||
);
|
||||
|
||||
const kopie = await testPrisma.vorlage.findUniqueOrThrow({ where: { id: vorlageId } });
|
||||
expect(kopie.seedSchluessel).toBeNull();
|
||||
});
|
||||
|
||||
it("leitet die Positionen aus der Reihenfolge der Listen ab", async () => {
|
||||
const redakteur = await redakteurAnlegen();
|
||||
const { versionId } = await vorlageImportieren(
|
||||
@@ -437,6 +455,19 @@ describe.runIf(datenbankVerfuegbar)("Vorlagen-Austausch", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("Seed-Schluessel", () => {
|
||||
it("steht in keinem Export – auch nicht bei einer mitgelieferten Vorlage", async () => {
|
||||
// Ein Feld, das beim Einlesen verfaellt, gehoert nicht in die Datei: wer es
|
||||
// dort sieht, haelt es fuer uebertragbar.
|
||||
const quelle = await beispielVersionAnlegen();
|
||||
await testPrisma.vorlage.updateMany({ data: { seedSchluessel: "pc-neuinstallation" } });
|
||||
|
||||
const austausch = await vorlageExportieren(quelle);
|
||||
expect(austausch).not.toHaveProperty("seedSchluessel");
|
||||
expect(JSON.stringify(austausch)).not.toContain("pc-neuinstallation");
|
||||
});
|
||||
});
|
||||
|
||||
describe("Rundlauf", () => {
|
||||
it("ergibt ein inhaltsgleiches Dokument – bis auf die Version", async () => {
|
||||
const redakteur = await redakteurAnlegen();
|
||||
|
||||
Reference in New Issue
Block a user