| 1 | import assert from "node:assert/strict"; |
| 2 | import { imageSubmissionIdentity, settleImageSubmission, captureImageTarget } from "../lib/attachmentSubmit"; |
| 3 | import { app, type AppBindings } from "../lib/bridge"; |
| 4 | |
| 5 | const first = imageSubmissionIdentity("session-a", "draft-version-1"); |
| 6 | assert.equal(imageSubmissionIdentity("session-a", "draft-version-1"), first); |
| 7 | assert.notEqual(imageSubmissionIdentity("session-b", "draft-version-1"), first); |
| 8 | const edited = imageSubmissionIdentity("session-a", "draft-version-2"); |
| 9 | assert.notEqual(edited, first); |
| 10 | settleImageSubmission("session-a", first); |
| 11 | assert.equal(imageSubmissionIdentity("session-a", "draft-version-2"), edited); |
| 12 | settleImageSubmission("session-a", edited); |
| 13 | assert.notEqual(imageSubmissionIdentity("session-a", "draft-version-2"), edited); |
| 14 | await assert.rejects(captureImageTarget({} as AppBindings, { kind: "session", tabId: "a" }), /unsupported/); |
| 15 | const captured = await app.CaptureAttachmentTarget!({ kind: "session", tabId: "mock-tab" }); |
| 16 | assert.deepEqual(captured.capabilities, ["attachments-v2"]); |
| 17 | const staged = await app.StageImageForTarget!(captured.token, "mock-operation", "photo.png", "image/png", "data:image/png;base64,aW1hZ2U="); |
| 18 | assert.equal(await app.ReadDraftImageForTarget!(captured.token, staged.draftId), "data:image/png;base64,aW1hZ2U="); |
| 19 | console.log("attachment submission identity: retry, edit, session isolation, capability rejection, and lazy mock loading passed"); |
| 20 |