
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 12:30:23 +02:00
2026-06-05 19:23:06 +02:00
2026-06-15 23:00:30 +02:00
2026-05-21 23:35:58 +02:00
2026-06-18 21:38:29 +02:00
2026-05-31 00:14:38 +02:00
2026-05-31 16:28:22 +02:00
2026-06-19 12:29:43 +02:00
2026-04-27 22:23:39 +02:00
2026-05-21 23:35:58 +02:00
2026-05-30 15:45:33 +02:00
2026-06-19 12:31:07 +02:00
2026-05-07 12:28:33 +02:00
2026-06-14 14:31:26 +02:00
2026-05-06 20:07:36 +02:00
2026-05-25 16:45:13 +02:00
2026-04-16 19:07:42 +02:00
2026-05-09 17:37:41 +02:00
2026-06-19 12:31:07 +02:00
2026-06-19 12:31:07 +02:00
2026-06-03 19:30:51 +02:00
2026-03-26 17:42:44 +01:00
2026-03-31 00:11:04 +02:00
2026-04-21 17:42:52 +02:00
2026-04-16 16:54:09 +02:00
2026-04-14 14:26:28 +02:00
2026-05-22 14:04:02 +02:00
2026-02-17 01:09:57 +01:00
2026-04-12 01:10:28 +02:00
2026-05-22 15:30:15 +02:00
2026-06-19 12:30:43 +02:00
2026-06-01 17:46:57 +02:00
2026-05-18 16:07:34 +02:00
2026-05-06 20:07:36 +02:00
2026-05-22 15:22:33 +02:00
2025-12-10 17:54:22 +01:00
2026-06-01 17:25:14 +02:00
2026-06-15 23:15:04 +02:00
2026-05-18 16:01:29 +02:00
2026-02-16 18:51:30 +01:00
2026-05-30 15:58:39 +02:00
2026-03-31 16:31:27 +02:00
2026-05-18 17:53:23 +02:00
2026-04-16 19:07:42 +02:00
2026-05-30 15:56:55 +02:00
2026-05-31 18:01:00 +02:00
2026-04-28 17:34:06 +02:00
2026-05-31 18:01:00 +02:00
2026-04-28 17:34:06 +02:00
2026-05-30 14:09:23 +02:00
2026-04-09 22:13:08 +02:00
2026-06-19 12:31:07 +02:00
2026-05-14 21:44:24 +02:00
2026-05-09 17:37:41 +02:00
2026-05-31 15:52:27 +02:00
2026-06-15 23:15:04 +02:00
2026-05-06 20:07:36 +02:00
2026-05-30 16:04:44 +02:00
2026-02-17 01:35:26 +01:00
2026-04-02 14:51:21 +02:00
2026-04-28 17:34:06 +02:00
2026-04-28 17:34:06 +02:00
2026-06-15 23:00:30 +02:00
2026-04-16 19:07:42 +02:00
2026-05-23 16:01:22 +02:00
2026-05-25 16:17:32 +02:00
2026-01-08 22:15:32 +01:00
2026-05-21 23:35:58 +02:00
2026-05-21 23:35:58 +02:00
2026-06-17 09:11:29 +02:00