reduce testing
CI / verify (pull_request) Successful in 8s

This commit is contained in:
2026-10-08 09:34:13 +02:00
parent 6f86d1af28
commit 59da616bc5
13 changed files with 299 additions and 2318 deletions
+48 -167
View File
@@ -120,171 +120,52 @@ test("reads credentials file and sends OAuth usage request", async () => {
await tracker.dispose();
});
test("missing credentials file yields no status", async () => {
let calls = 0;
const tracker = new ClaudeQuotaTracker(
async () => {},
async () => {
calls++;
return Response.json(payload);
},
60_000,
path,
);
await tracker.init();
expect(calls).toBe(0);
expect(tracker.status()).toBeUndefined();
await tracker.dispose();
});
test("expired token skips fetch and keeps last snapshot", async () => {
await writeFile(path, credentials(Date.now() + 3_600_000));
let calls = 0;
const tracker = new ClaudeQuotaTracker(
async () => {},
async () => {
calls++;
return Response.json(payload);
},
60_000,
path,
1,
);
await tracker.init();
await writeFile(path, credentials(Date.now() - 1));
await tracker.refresh();
expect(calls).toBe(1);
expect(tracker.status()?.windows).toHaveLength(4);
await tracker.dispose();
});
test("failed fetch retries with re-read credentials", async () => {
await writeFile(path, credentials(Date.now() + 3_600_000));
const tokens: Array<string | null> = [];
let changed = 0;
const tracker = new ClaudeQuotaTracker(
async () => {
changed++;
},
async (_input, init) => {
tokens.push(new Headers(init?.headers).get("authorization"));
if (tokens.length > 1) return Response.json(payload);
await writeFile(
path,
credentials(Date.now() + 3_600_000).replace("token-123", "token-456"),
);
throw new Error("network down");
},
60_000,
path,
1,
);
await tracker.init();
expect(tokens).toEqual(["Bearer token-123", "Bearer token-456"]);
expect(tracker.status()?.plan).toBe("max");
expect(changed).toBe(1);
await tracker.dispose();
});
test("corrupt credentials file keeps previous status and retries", async () => {
await writeFile(path, credentials(Date.now() + 3_600_000));
let calls = 0;
let changed = 0;
const tracker = new ClaudeQuotaTracker(
async () => {
changed++;
},
async () => {
calls++;
return Response.json(payload);
},
60_000,
path,
1,
);
await tracker.init();
await writeFile(path, "{not json");
await tracker.refresh();
await writeFile(path, JSON.stringify({ claudeAiOauth: { accessToken: 1 } }));
await tracker.refresh();
expect(calls).toBe(1);
expect(changed).toBe(1);
expect(tracker.status()?.windows).toHaveLength(4);
await tracker.dispose();
});
test("missing credentials file clears status without retry", async () => {
await writeFile(path, credentials(Date.now() + 3_600_000));
let calls = 0;
let changed = 0;
const tracker = new ClaudeQuotaTracker(
async () => {
changed++;
},
async () => {
calls++;
return Response.json(payload);
},
60_000,
path,
10_000,
);
await tracker.init();
await rm(path);
const start = performance.now();
await tracker.refresh();
expect(performance.now() - start).toBeLessThan(1_000);
expect(calls).toBe(1);
expect(changed).toBe(2);
expect(tracker.status()).toBeUndefined();
await tracker.dispose();
});
test("gives up after five failed attempts", async () => {
await writeFile(path, credentials(Date.now() + 3_600_000));
let calls = 0;
const tracker = new ClaudeQuotaTracker(
async () => {},
async () => {
calls++;
return new Response("nope", { status: 500 });
},
60_000,
path,
1,
);
await tracker.init();
expect(calls).toBe(5);
expect(tracker.status()).toBeUndefined();
await tracker.refresh();
expect(calls).toBe(10);
await tracker.dispose();
});
test("dispose during backoff resolves quickly", async () => {
await writeFile(path, credentials(Date.now() + 3_600_000));
let calls = 0;
let changed = 0;
const tracker = new ClaudeQuotaTracker(
async () => {
changed++;
},
async () => {
calls++;
throw new Error("network down");
},
60_000,
path,
60_000,
);
const init = tracker.init();
while (calls === 0) await new Promise((resolve) => setTimeout(resolve, 1));
await new Promise((resolve) => setTimeout(resolve, 5));
const start = performance.now();
await tracker.dispose();
await init;
expect(performance.now() - start).toBeLessThan(1_000);
expect(calls).toBe(1);
expect(changed).toBe(0);
expect(tracker.status()).toBeUndefined();
test("failed fetches retry with re-read credentials and give up after five attempts", async () => {
{
await writeFile(path, credentials(Date.now() + 3_600_000));
const tokens: Array<string | null> = [];
let changed = 0;
const tracker = new ClaudeQuotaTracker(
async () => {
changed++;
},
async (_input, init) => {
tokens.push(new Headers(init?.headers).get("authorization"));
if (tokens.length > 1) return Response.json(payload);
await writeFile(
path,
credentials(Date.now() + 3_600_000).replace("token-123", "token-456"),
);
throw new Error("network down");
},
60_000,
path,
1,
);
await tracker.init();
expect(tokens).toEqual(["Bearer token-123", "Bearer token-456"]);
expect(tracker.status()?.plan).toBe("max");
expect(changed).toBe(1);
await tracker.dispose();
}
{
await writeFile(path, credentials(Date.now() + 3_600_000));
let calls = 0;
const tracker = new ClaudeQuotaTracker(
async () => {},
async () => {
calls++;
return new Response("nope", { status: 500 });
},
60_000,
path,
1,
);
await tracker.init();
expect(calls).toBe(5);
expect(tracker.status()).toBeUndefined();
await tracker.refresh();
expect(calls).toBe(10);
await tracker.dispose();
}
});