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 }, }); }); });