/home/techb158/cosmic-risk.abdallabala.com/tests
Edit: /home/techb158/cosmic-risk.abdallabala.com/tests/idempotency.test.js (1714B)
process.env.COSMIC_REDIS_ENABLED = "false";
const assert = require("assert");
const { withIdempotency, getIdempotencyKey } = require("../src/lib/idempotency");
const { redisDel } = require("../src/lib/redis");
(async () => {
await redisDel("idemp:key-1");
await redisDel("idemp:key-2");
let callCount = 0;
const handler = async () => { callCount++; return "result"; };
const r1 = await withIdempotency("key-1", handler);
assert.strictEqual(r1, "result");
assert.strictEqual(callCount, 1);
const r2 = await withIdempotency("key-1", handler);
assert.strictEqual(r2, "result");
assert.strictEqual(callCount, 1, "handler should not be called again for same key");
const r3 = await withIdempotency("key-2", handler);
assert.strictEqual(r3, "result");
assert.strictEqual(callCount, 2);
const r4 = await withIdempotency(null, handler);
assert.strictEqual(r4, "result");
assert.strictEqual(callCount, 3, "handler should be called when key is null");
const r5 = await withIdempotency(undefined, handler);
assert.strictEqual(r5, "result");
assert.strictEqual(callCount, 4, "handler should be called when key is undefined");
const reqWithKey = { headers: { get: (name) => name === "Idempotency-Key" ? "abc-123" : null } };
assert.strictEqual(getIdempotencyKey(reqWithKey), "abc-123");
const reqLowercase = { headers: { get: (name) => name === "idempotency-key" ? "def-456" : null } };
assert.strictEqual(getIdempotencyKey(reqLowercase), "def-456");
const reqNoKey = { headers: { get: () => null } };
assert.strictEqual(getIdempotencyKey(reqNoKey), null);
console.log("All idempotency tests passed.");
})().catch(err => { console.error(err); process.exit(1); });