import { BadRequestException } from '@nestjs/common'; import { parseSendEmailBody } from './send-email-body.util'; describe('parseSendEmailBody', () => { const gueltig = { to: 'a@example.org', subject: 'Betreff', body: 'Text', html: '

Text

', segments: [{ pages: [1, 2], filename: 'beleg' }], sender: 'user', }; it('übernimmt einen gültigen Body', () => { expect(parseSendEmailBody(gueltig)).toEqual(gueltig); }); it('lässt html und sender weg, wenn sie fehlen', () => { const ohne = { ...gueltig, html: undefined, sender: undefined }; expect(parseSendEmailBody(ohne)).toEqual({ to: gueltig.to, subject: gueltig.subject, body: gueltig.body, segments: gueltig.segments, }); }); it.each([ ['html als Objekt mit path', { html: { path: '/proc/self/environ' } }], ['body als Objekt mit href', { body: { href: 'http://169.254.169.254/' } }], ['to als Objekt', { to: { address: 'a@example.org' } }], ['to als Array', { to: ['a@example.org'] }], ['subject fehlt', { subject: undefined }], ['segments kein Array', { segments: 'x' }], ['Seite keine Zahl', { segments: [{ pages: ['1'], filename: 'x' }] }], [ 'filename kein String', { segments: [{ pages: [1], filename: { path: '/etc/passwd' } }] }, ], ['sender kein String', { sender: { x: 1 } }], ])('lehnt ab: %s', (_name, patch) => { expect(() => parseSendEmailBody({ ...gueltig, ...patch })).toThrow( BadRequestException, ); }); it('lehnt einen fehlenden Body ab', () => { expect(() => parseSendEmailBody(undefined)).toThrow(BadRequestException); }); });