Spaces:
Running
Running
File size: 1,619 Bytes
9f6a8e2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | const assert = require("node:assert/strict");
const fs = require("node:fs");
const test = require("node:test");
const vm = require("node:vm");
const source = fs.readFileSync(
"web_demo/static/shared/measurement-session.js",
"utf8",
);
function loadHelper() {
const data = new Map();
let idCounter = 0;
const window = {
crypto: { randomUUID: () => `00000000-0000-4000-8000-${String(++idCounter).padStart(12, "0")}` },
sessionStorage: {
getItem: (key) => data.has(key) ? data.get(key) : null,
setItem: (key, value) => data.set(key, value),
},
};
vm.runInNewContext(source, { window, Date, JSON, Math, Number, String });
return window.MeasurementSession;
}
test("preserves returned state for an unchanged context", () => {
const helper = loadHelper();
const context = {
kol_email: "User@Example.com ", ring_model: "gen", mode: "multi",
finger_index: "index", source: "photo",
};
const first = helper.prepare(context);
const state = { session_id: first.session_id, attempt_count: 1, shots: [] };
helper.accept(context, { session_state: state });
assert.deepEqual(helper.prepare(context).session_state, state);
});
test("rotates the session when measurement context changes", () => {
const helper = loadHelper();
const base = {
kol_email: "user@example.com", ring_model: "gen", mode: "multi",
finger_index: "index", source: "photo",
};
const first = helper.prepare(base);
const second = helper.prepare({ ...base, ring_model: "air" });
assert.notEqual(second.session_id, first.session_id);
assert.equal(second.session_state, null);
});
|