codex-proxy / src /auth /__tests__ /config-quota.test.ts
icebear
feat: auto-refresh quota with tiered warnings (#92) (#93)
4f2665c unverified
raw
history blame
2.19 kB
/**
* Tests for quota config section parsing.
*/
import { describe, it, expect, vi, beforeEach } from "vitest";
// Mock dependencies before importing config
vi.mock("../../models/model-store.js", () => ({
loadStaticModels: vi.fn(),
}));
vi.mock("../../models/model-fetcher.js", () => ({
triggerImmediateRefresh: vi.fn(),
}));
import { z } from "zod";
// Replicate the quota schema to test independently
const QuotaSchema = z.object({
refresh_interval_minutes: z.number().min(1).default(5),
warning_thresholds: z.object({
primary: z.array(z.number().min(1).max(100)).default([80, 90]),
secondary: z.array(z.number().min(1).max(100)).default([80, 90]),
}).default({}),
skip_exhausted: z.boolean().default(true),
}).default({});
describe("quota config schema", () => {
it("uses defaults when empty", () => {
const result = QuotaSchema.parse({});
expect(result.refresh_interval_minutes).toBe(5);
expect(result.warning_thresholds.primary).toEqual([80, 90]);
expect(result.warning_thresholds.secondary).toEqual([80, 90]);
expect(result.skip_exhausted).toBe(true);
});
it("uses defaults when undefined", () => {
const result = QuotaSchema.parse(undefined);
expect(result.refresh_interval_minutes).toBe(5);
});
it("accepts custom thresholds", () => {
const result = QuotaSchema.parse({
refresh_interval_minutes: 10,
warning_thresholds: {
primary: [70, 85, 95],
secondary: [60],
},
skip_exhausted: false,
});
expect(result.refresh_interval_minutes).toBe(10);
expect(result.warning_thresholds.primary).toEqual([70, 85, 95]);
expect(result.warning_thresholds.secondary).toEqual([60]);
expect(result.skip_exhausted).toBe(false);
});
it("rejects refresh_interval_minutes < 1", () => {
expect(() => QuotaSchema.parse({ refresh_interval_minutes: 0 })).toThrow();
});
it("rejects threshold > 100", () => {
expect(() => QuotaSchema.parse({
warning_thresholds: { primary: [101] },
})).toThrow();
});
it("rejects threshold < 1", () => {
expect(() => QuotaSchema.parse({
warning_thresholds: { primary: [0] },
})).toThrow();
});
});