fix: harden identity, live access, drafts and setup (review only)
Source-reviewed hardening changes and regression tests. UNBUILT / UNTESTED: not a deployable release. Go formatting, compilation, automated regression tests, full frontend validation and staging acceptance remain required. See docs/hardening/VALIDATION.md. Main remains the original clean snapshot; no upstream Git history imported.
This commit is contained in:
14
web/lib/message-file-identity.test.mjs
Normal file
14
web/lib/message-file-identity.test.mjs
Normal file
@@ -0,0 +1,14 @@
|
||||
import assert from "node:assert/strict"
|
||||
import test from "node:test"
|
||||
import { getMessageFileIdentity } from "./message-file-identity.ts"
|
||||
|
||||
const file = (content, name = "attachment.txt") => ({ name, type: "text/plain",
|
||||
arrayBuffer: async () => new TextEncoder().encode(content).buffer })
|
||||
|
||||
test("reselecting identical file content keeps attachment retry identity", async () => {
|
||||
assert.equal(await getMessageFileIdentity(file("same")), await getMessageFileIdentity(file("same")))
|
||||
})
|
||||
|
||||
test("equal-name equal-size files with different bytes cannot share retry identity", async () => {
|
||||
assert.notEqual(await getMessageFileIdentity(file("left")), await getMessageFileIdentity(file("next")))
|
||||
})
|
||||
Reference in New Issue
Block a user