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.
15 lines
694 B
JavaScript
15 lines
694 B
JavaScript
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")))
|
|
})
|