Pi token refresh (10 min) and auth session cleanup (1 h) no longer run their own setInterval; both register in the maintain group of the schedules registry with the same default intervals. Co-Authored-By: Claude Opus 5.5 <[email protected]>
52 lines
2.1 KiB
TypeScript
52 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { createAuthSettingsModule } from "../../src/modules/auth-settings/index.ts";
|
|
import { createPiModule } from "../../src/modules/pi/index.ts";
|
|
import { scheduleRegistry } from "../../src/modules/schedules/registry.ts";
|
|
import type { ServerContext } from "../../src/modules/types.ts";
|
|
|
|
// W8-A:pi token 刷新与认证表清理不再自建计时器,改为登记到定时任务注册表(维护组、默认开启、周期不变)。
|
|
|
|
describe("模块周期任务登记", () => {
|
|
it("pi.token_refresh:10 分钟,执行体按时间槽幂等入队 refreshPiTokens", async () => {
|
|
const enqueued: { name: string; key: string }[] = [];
|
|
const ctx = {
|
|
engine: {
|
|
enqueue: (name: string, _i: unknown, o: { idempotencyKey: string }) => {
|
|
enqueued.push({ name, key: o.idempotencyKey });
|
|
return Promise.resolve({ deduplicated: false });
|
|
},
|
|
},
|
|
} as unknown as ServerContext;
|
|
const mod = createPiModule();
|
|
await mod.start?.(ctx);
|
|
const def = scheduleRegistry(ctx).get("pi.token_refresh");
|
|
expect(def?.defaults).toMatchObject({ group: "maintain", schedule: { type: "interval", everyMs: 600_000 } });
|
|
expect(def?.defaults.enabled).not.toBe(false);
|
|
await def?.run({
|
|
jobId: "pi.token_refresh",
|
|
runId: "r",
|
|
trigger: "schedule",
|
|
now: new Date(),
|
|
config: {},
|
|
slot: "42",
|
|
});
|
|
expect(enqueued).toEqual([{ name: "refreshPiTokens", key: "refreshPiTokens:42" }]);
|
|
await mod.stop?.();
|
|
});
|
|
|
|
it("refreshIntervalMs<=0 不登记", async () => {
|
|
const ctx = {} as ServerContext;
|
|
await createPiModule({ refreshIntervalMs: 0 }).start?.(ctx);
|
|
expect(scheduleRegistry(ctx).get("pi.token_refresh")).toBeUndefined();
|
|
});
|
|
|
|
it("auth.cleanup:1 小时,维护组", async () => {
|
|
const ctx = {} as ServerContext;
|
|
await createAuthSettingsModule({ setupTokenOnStart: false }).start?.(ctx);
|
|
expect(scheduleRegistry(ctx).get("auth.cleanup")?.defaults).toMatchObject({
|
|
group: "maintain",
|
|
schedule: { type: "interval", everyMs: 3_600_000 },
|
|
});
|
|
});
|
|
});
|