Gaestetexte/Datenschutz: Storno-Regel im Archiv, PDF-Pruefsumme, PDF-Kopfpruefung
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9a2a70b491
commit
ec320853ce
13 files changed
+124
-12
No files matched your search
@@ -200,6 +200,39 @@ test('featureLegalReady("termine"): je PDF stat und "%PDF-", nie den ganzen Inha
|
||||
assert.equal(await featureLegalReady('termine'), true, 'mit den ausgelieferten Dateien bereit')
|
||||
})
|
||||
|
||||
// R121: ein Anhang ist ein PDF. Eine leere oder keine PDF-Datei wird nie angehängt, sondern wirft (die Aufrufer fangen den Wurf).
|
||||
test('legalPdfAttachments: eine leere Datei oder eine Datei ohne "%PDF-" am Anfang wirft, ausgenommene Dokumente zählen nicht', async () => {
|
||||
const kopien = mkdtempSync(join(tmpdir(), 'legal-anhang-'))
|
||||
mkdirSync(join(kopien, 'rechtliches'))
|
||||
const echtePdf = Object.fromEntries(Object.entries(legalPdfFiles('termine', V)).map(([doc, f]) => [doc, f.path]))
|
||||
const pdfPfad = (doc) => join(kopien, 'rechtliches', echtePdf[doc].split('/').at(-1))
|
||||
const bereit = () => {
|
||||
for (const pfad of Object.values(echtePdf)) copyFileSync(pfad, join(kopien, 'rechtliches', pfad.split('/').at(-1)))
|
||||
}
|
||||
try {
|
||||
setLegalDirForTests(kopien)
|
||||
bereit()
|
||||
const gut = await legalPdfAttachments('termine', V)
|
||||
assert.equal(gut.length, 3)
|
||||
for (const a of gut) assert.equal(a.content.subarray(0, 5).toString('latin1'), '%PDF-')
|
||||
for (const doc of ['lb', 'avv', 'widerruf']) {
|
||||
for (const [mangel, inhaltDatei] of [['leer', ''], ['kein PDF', '<html>kein PDF</html>'], ['zu kurz', '%PDF'], ['PDF nicht am Anfang', ' %PDF-1.4\n']]) {
|
||||
writeFileSync(pdfPfad(doc), inhaltDatei)
|
||||
await assert.rejects(legalPdfAttachments('termine', V), /PDF/, `${doc}: ${mangel}`)
|
||||
await assert.rejects(featureLegalAttachments('termine'), /PDF/, `${doc}: ${mangel} (Funktion)`)
|
||||
// ein ausgenommenes Dokument wird nicht gelesen und darf kaputt sein
|
||||
const ohne = await legalPdfAttachments('termine', V, { ohne: [doc] })
|
||||
assert.equal(ohne.length, 2, `${doc}: ${mangel}, ausgenommen`)
|
||||
}
|
||||
bereit()
|
||||
assert.equal((await legalPdfAttachments('termine', V)).length, 3, `${doc}: wieder in Ordnung`)
|
||||
}
|
||||
} finally {
|
||||
setLegalDirForTests(null)
|
||||
rmSync(kopien, { recursive: true, force: true })
|
||||
}
|
||||
})
|
||||
|
||||
// Fassung wählbar (Task F8, Fix-Runde 1): K15 schickt die Unterlagen der Fassung, der der Kunde zugestimmt hat
|
||||
test('featureLegalAttachments / featureLegalReady / featureLegalPaths mit opts.fassung', async () => {
|
||||
assert.deepEqual(featureLegalPaths('termine'), legalPaths('termine', V))
|
||||
|
||||
Reference in new issue
Block a user