eleven / ocho Public

Clone
git clone https://amadan.net/eleven/ocho

Plain git — no account needed to clone.

Download

Download this file

1// Tests for the enrolment live-session fast-path decision (#1378), run in
2// Node. Same harness style as home/test/serverlist.test.mjs.
3// node home/test/sessionreuse.test.mjs
4import assert from "node:assert/strict";
5import { reuseCandidate } from "../web/static/sessionreuse.js";
6
7const store = (entries) => ({ getItem: (k) => (k in entries ? entries[k] : null) });
8
9let pass = 0;
10function test(name, fn) {
11 fn();
12 pass++;
13 console.log("PASS ", name);
14}
15
16test("both halves present → candidate with token + dek", () => {
17 assert.deepEqual(
18 reuseCandidate(store({ home_token: "tok", home_dek: "dek64" })),
19 { token: "tok", dek: "dek64" },
20 );
21});
22
23test("either half missing → null (ceremony path)", () => {
24 assert.equal(reuseCandidate(store({ home_token: "tok" })), null, "no DEK — a persisted token alone never skips the ceremony");
25 assert.equal(reuseCandidate(store({ home_dek: "dek64" })), null, "no token");
26 assert.equal(reuseCandidate(store({})), null, "cold tab");
27 assert.equal(reuseCandidate(store({ home_token: "", home_dek: "" })), null, "empty strings are absent");
28});
29
30test("throwing or absent storage → null, never a crash", () => {
31 assert.equal(reuseCandidate({ getItem: () => { throw new Error("denied"); } }), null);
32 assert.equal(reuseCandidate(null), null);
33});
34
35console.log("\nALL PASSED (" + pass + ")");
36