import { describe, expect, it } from "vitest"; import { deriveKey, generateSalt } from "./argon2"; describe("crypto argon2", () => { it("deriveKey is deterministic for the same password and salt", async () => { const salt = generateSalt(); const first = await deriveKey("correct-pass-12345", salt); const second = await deriveKey("correct-pass-12345", salt); expect(first).toEqual(second); }); it("deriveKey changes when the salt changes", async () => { const first = await deriveKey("correct-pass-12345", generateSalt()); const second = await deriveKey("correct-pass-12345", generateSalt()); expect(first).not.toEqual(second); }); it("deriveKey changes when the password changes", async () => { const salt = generateSalt(); const first = await deriveKey("correct-pass-12345", salt); const second = await deriveKey("wrong-pass-67890", salt); expect(first).not.toEqual(second); }); it("generateSalt returns 16 bytes", () => { expect(generateSalt()).toHaveLength(16); }); it("generateSalt returns different values across calls", () => { expect(generateSalt()).not.toEqual(generateSalt()); }); });