
Stefan HildebrandtandLinus Rath
2fac6ebfb8
test: add characterisation tests for untested integration seams
Golden-master tests pinning the CURRENT behavior of high-value modules
that had no coverage — integration seams, security helpers, two API
route handlers, and complex pure utils. 111 tests across 12 files.
New tests:
- auth-crypto / session-cookie: AES-256-GCM session encryption roundtrip,
tamper/version/missing-secret handling; cookie-slot naming.
- unified-mailbox: multi-account fan-out, sort, totals, per-account error
isolation, personal-vs-shared JMAP target resolution, counts/roles.
- account-state-manager: snapshot/restore across the six real Zustand
stores; clearAllStores reset shape; evict.
- mdn: RFC 5322 MDN assembly (CRLF, RFC2047, base64 wrap, headers).
- tnef: winmail.dat binary parsing from hand-built fixtures.
- download-filename / subject-prefix / birthday-calendar / eml-import:
filename templating, multilingual prefix stripping, birthday event
generation, .eml/.zip import.
- webdav / caldav-discover route handlers: auth guards, path validation,
upstream URL construction, candidate probing.
- helpers/factories.ts: shared makeEmail/makeMailbox/makeFakeJmapClient.
Tests follow the repo's existing patterns (route-import, fake IJMAPClient,
fetch spy, real store singletons). Where current behavior looks buggy it
is pinned and flagged with a // CHARACTERISATION: comment (see PR for the
suspected-bugs list); no production code is changed.
2026-06-19 23:52:42 +02:00
..
2026-06-19 23:52:42 +02:00
2026-06-19 23:52:42 +02:00
2026-06-19 23:52:42 +02:00
2026-06-12 00:23:00 +02:00
2026-06-19 23:52:42 +02:00
2026-06-03 19:30:51 +02:00
2026-06-19 23:52:42 +02:00
2026-04-26 20:10:04 +02:00
2026-03-31 00:11:04 +02:00
2026-03-27 18:46:20 +01:00
2026-03-16 22:00:11 +01:00
2026-03-28 00:33:38 +01:00
2026-02-17 01:09:57 +01:00
2026-05-28 20:06:47 +02:00
2026-04-25 18:40:54 +02:00
2026-04-16 19:07:42 +02:00
2026-05-28 20:06:47 +02:00
2026-06-19 23:52:42 +02:00
2026-06-19 12:30:43 +02:00
2026-06-01 17:46:57 +02:00
2026-05-18 00:24:08 +02:00
2026-04-30 01:25:04 +02:00
2026-06-19 23:52:42 +02:00
2026-03-16 22:00:11 +01:00
2026-03-19 18:50:59 +01:00
2026-05-31 16:28:22 +02:00
2026-06-15 23:15:04 +02:00
2026-05-21 23:35:58 +02:00
2026-03-30 21:12:05 +02:00
2026-04-16 19:07:42 +02:00
2026-03-21 20:45:20 +01:00
2026-06-12 00:02:45 +02:00
2026-02-16 18:51:30 +01:00
2026-04-21 17:29:23 +02:00
2026-05-28 18:46:49 +02:00
2026-04-16 19:07:42 +02:00
2026-05-22 11:51:25 +02:00
2026-06-19 12:29:43 +02:00
2026-06-19 23:52:42 +02:00
2026-05-22 17:22:14 +02:00
2026-06-02 00:15:50 +02:00
2026-02-26 00:08:57 +01:00
2026-03-25 00:44:03 +01:00
2026-03-25 00:44:03 +01:00
2026-03-25 00:44:03 +01:00
2026-03-25 00:44:03 +01:00
2026-05-18 12:17:54 +02:00
2026-03-25 00:44:03 +01:00
2026-04-28 15:39:13 +02:00
2026-05-12 20:49:05 +02:00
2026-06-19 12:31:07 +02:00
2026-05-11 12:13:47 +02:00
2026-03-14 16:50:43 +01:00
2026-06-19 23:52:42 +02:00
2026-05-31 15:52:27 +02:00
2026-04-16 17:22:52 +02:00
2026-03-15 16:07:45 +01:00
2026-05-30 15:12:30 +02:00
2026-05-01 01:48:39 +02:00
2026-06-19 23:52:42 +02:00
2026-02-17 01:35:26 +01:00
2026-04-28 15:39:13 +02:00
2026-04-28 15:39:13 +02:00
2026-03-23 15:45:37 +01:00
2026-06-19 23:52:42 +02:00
2026-03-18 18:00:51 +01:00
2026-06-19 23:52:42 +02:00
2026-04-27 22:23:39 +02:00
2026-01-08 22:15:32 +01:00
2026-05-15 20:10:18 +02:00
2026-04-30 15:34:14 +02:00
2026-05-16 18:11:52 +02:00
2026-06-19 23:52:42 +02:00