ken_nogi/PleasanterSystem/dbbackup/test/tokenRefresher.test.js
Kenichiro NOGI ed33892f08 chore: 作業中の変更を整理しコミット(複数プロジェクト分)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-02 11:09:50 +09:00

66 lines
1.8 KiB
JavaScript

"use strict";
const test = require("node:test");
const assert = require("node:assert/strict");
const { createTokenRefresher } = require("../lib/tokenRefresher");
test("初回getToken呼び出しでgetUserAccessTokenを呼びトークンを返す", async () => {
let calls = 0;
const refresher = createTokenRefresher({
getUserAccessToken: async () => {
calls += 1;
return `token-${calls}`;
},
thresholdMs: 50 * 60 * 1000,
now: () => 0,
});
const token = await refresher.getToken();
assert.equal(token, "token-1");
assert.equal(calls, 1);
});
test("閾値未経過なら再取得せずキャッシュ済トークンを返す", async () => {
let calls = 0;
let currentTime = 0;
const refresher = createTokenRefresher({
getUserAccessToken: async () => {
calls += 1;
return `token-${calls}`;
},
thresholdMs: 50 * 60 * 1000,
now: () => currentTime,
});
const first = await refresher.getToken();
currentTime = 30 * 60 * 1000; // 30分経過(閾値50分未満)
const second = await refresher.getToken();
assert.equal(first, "token-1");
assert.equal(second, "token-1");
assert.equal(calls, 1);
});
test("閾値を超えて経過したら再取得する", async () => {
let calls = 0;
let currentTime = 0;
const refresher = createTokenRefresher({
getUserAccessToken: async () => {
calls += 1;
return `token-${calls}`;
},
thresholdMs: 50 * 60 * 1000,
now: () => currentTime,
});
const first = await refresher.getToken();
currentTime = 51 * 60 * 1000; // 51分経過(閾値50分超過)
const second = await refresher.getToken();
assert.equal(first, "token-1");
assert.equal(second, "token-2");
assert.equal(calls, 2);
});