claude_code
0b2af34029
test(integrations/client/packages): batch 2-4 unit coverage + zip-slip guard extraction
Batch 2-4 of the test-strategy rollout. Test-only except one minimal,
behaviour-preserving extraction in file.utils.ts. All suites green:
server 82 suites/836+1todo, editor-ext 86, mcp 270, client (new files) 86.
integrations (server):
- file.utils.ts: extract pure `isEntryPathSafe(entryName, targetDir)` from
extractZipInternal so the zip-slip/path-traversal guard is unit-testable;
call site rerouted, behaviour identical (only a warn-message string merged).
- file.utils.zip-safety.spec.ts: traversal/strip/__MACOSX/prefix-confusion
cases (mutation-resistant: fails if containment loses the path.sep).
- import-formatter / import.utils / table-utils / export utils / import.service
extractTitleAndRemoveHeading: pure import/export transforms, Notion/XWiki
formatting, table colspan widths (idempotent), slug/link rewriting.
client:
- safeRedirectPath: open-redirect guard, every reject branch independently.
- buildChatMarkdown (fence anti-breakout), label-colors, normalize-label,
share tree build, page URL builders, notification time-grouping (fake clock).
packages:
- editor-ext: deriveFootnoteId golden table, parseHtmlEmbedHeight crafted
values, orphan footnote extraction.
- mcp: deriveFootnoteId parity (drift guard vs editor-ext), applyTextEdits
idempotency + cross-block replaceAll, diffDocs/summarizeChange on reorder.
Reviewed (APPROVE): extraction behaviour-preserving, assertions mutation-resistant.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 18:22:15 +03:00
..
2026-03-24 10:52:09 +00:00
2026-03-28 17:33:29 +00:00
2026-05-15 02:46:54 +01:00
2026-02-25 22:41:54 +00:00
2025-07-29 21:36:48 +01:00
2026-05-15 02:46:54 +01:00
2026-01-24 20:41:08 +00:00
2026-06-21 18:22:15 +03:00
2026-02-25 22:41:54 +00:00
2026-06-21 18:22:15 +03:00
2026-03-28 17:33:29 +00:00
2026-06-21 18:22:15 +03:00
2026-02-28 01:24:19 +00:00
2026-05-14 03:48:13 +01:00
2026-06-20 23:40:40 +03:00
2026-03-28 17:33:29 +00:00
2026-02-03 11:55:20 -08:00
2026-01-30 22:37:22 +00:00
2026-01-24 20:41:08 +00:00
2026-02-28 01:24:19 +00:00
2026-05-14 00:37:44 +01:00
2026-05-08 13:23:16 +01:00
2026-01-24 20:41:08 +00:00
2026-05-20 16:45:59 +01:00
2026-05-20 16:45:59 +01:00
2026-01-24 23:35:04 +00:00
2026-03-28 17:33:29 +00:00
2026-05-20 16:45:59 +01:00
2025-12-01 11:34:35 +00:00
2026-05-20 16:47:25 +01:00
2026-04-13 01:09:36 +01:00
2026-03-04 11:51:43 +00:00
2025-12-11 19:32:18 +00:00
2026-03-28 17:33:29 +00:00
2024-06-24 20:39:12 +01:00
2026-02-27 01:34:03 +00:00
2025-12-06 14:46:54 +00:00
2024-07-22 10:58:32 +01:00
2026-05-15 02:46:54 +01:00