This commit is contained in:
@@ -95,6 +95,67 @@ test("normalizes additional named limits with stable IDs distinct from equal dur
|
||||
).toEqual(["codex_luna:primary"]);
|
||||
});
|
||||
|
||||
test("ignores Spark and representative reserve limits while preserving other quotas", () => {
|
||||
const normalized = normalizeQuota({
|
||||
...plus,
|
||||
additional_rate_limits: [
|
||||
{
|
||||
limit_name: "gpt 5_3 codex spark",
|
||||
metered_feature: "CODEX-BENGALFOX",
|
||||
rate_limit: {
|
||||
primary_window: { used_percent: "invalid" },
|
||||
},
|
||||
},
|
||||
{
|
||||
limit_name: "Luna Reserve",
|
||||
metered_feature: "codex_luna",
|
||||
rate_limit: { primary_window: { used_percent: "invalid" } },
|
||||
},
|
||||
{
|
||||
limit_name: "Luna overflow",
|
||||
metered_feature: "codex_luna_reserve",
|
||||
rate_limit: { primary_window: { used_percent: "invalid" } },
|
||||
},
|
||||
{
|
||||
limit_name: "GPT-5.6 Luna",
|
||||
metered_feature: "codex_luna",
|
||||
rate_limit: { primary_window: plus.rate_limit.primary_window },
|
||||
},
|
||||
{
|
||||
limit_name: "Preserved capacity",
|
||||
metered_feature: "codex_preserved",
|
||||
rate_limit: { primary_window: plus.rate_limit.primary_window },
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(normalized?.windows.map((window) => window.id)).toEqual([
|
||||
"codex:primary",
|
||||
"codex:secondary",
|
||||
"codex_luna:primary",
|
||||
"codex_preserved:primary",
|
||||
]);
|
||||
expect(normalized?.windows.slice(2).map((window) => window.label)).toEqual([
|
||||
"GPT-5.6 Luna",
|
||||
"Preserved capacity",
|
||||
]);
|
||||
});
|
||||
|
||||
test("returns no quota for a Spark-only payload", () => {
|
||||
expect(
|
||||
normalizeQuota({
|
||||
plan_type: "pro",
|
||||
additional_rate_limits: [
|
||||
{
|
||||
limit_name: "GPT-5.3-Codex-Spark",
|
||||
metered_feature: "codex_bengalfox",
|
||||
rate_limit: { primary_window: plus.rate_limit.primary_window },
|
||||
},
|
||||
],
|
||||
}),
|
||||
).toBeUndefined();
|
||||
});
|
||||
|
||||
function fixture(
|
||||
credential:
|
||||
| {
|
||||
@@ -190,6 +251,96 @@ function fixture(
|
||||
};
|
||||
}
|
||||
|
||||
async function accountFingerprint(id: string) {
|
||||
const bytes = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(`account:${id}`));
|
||||
return Buffer.from(bytes).toString("hex");
|
||||
}
|
||||
|
||||
test("removes cached Spark and representative reserve windows and consumption while offline", async () => {
|
||||
const cached = {
|
||||
account: await accountFingerprint("account-one"),
|
||||
latest: {
|
||||
plan: "pro",
|
||||
fetchedAt: 123,
|
||||
windows: [
|
||||
{
|
||||
id: "codex:primary",
|
||||
label: null,
|
||||
seconds: 18_000,
|
||||
used: 12.5,
|
||||
resetsAt: 2_000_000_000_000,
|
||||
},
|
||||
{
|
||||
id: "CODEX-BENGALFOX:primary",
|
||||
label: "GPT 5.3 Codex Spark",
|
||||
seconds: 18_000,
|
||||
used: 80,
|
||||
resetsAt: 2_000_000_000_000,
|
||||
},
|
||||
{
|
||||
id: "codex_luna_reserve:primary",
|
||||
label: "Luna Reserve",
|
||||
seconds: 18_000,
|
||||
used: 60,
|
||||
resetsAt: 2_000_000_000_000,
|
||||
},
|
||||
{
|
||||
id: "codex_luna:primary",
|
||||
label: "GPT-5.6 Luna",
|
||||
seconds: 18_000,
|
||||
used: 20,
|
||||
resetsAt: 2_000_000_000_000,
|
||||
},
|
||||
],
|
||||
},
|
||||
sessions: {
|
||||
root: {
|
||||
"codex:primary": {
|
||||
resetsAt: 2_000_000_000_000,
|
||||
lastUsed: 12.5,
|
||||
consumed: 2,
|
||||
},
|
||||
"CODEX-BENGALFOX:primary": {
|
||||
resetsAt: 2_000_000_000_000,
|
||||
lastUsed: 80,
|
||||
consumed: 40,
|
||||
},
|
||||
"codex_luna_reserve:primary": {
|
||||
resetsAt: 2_000_000_000_000,
|
||||
lastUsed: 60,
|
||||
consumed: 30,
|
||||
},
|
||||
"codex_luna:primary": {
|
||||
resetsAt: 2_000_000_000_000,
|
||||
lastUsed: 20,
|
||||
consumed: 3,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
const result = fixture(
|
||||
{
|
||||
type: "oauth",
|
||||
access: "opaque",
|
||||
refresh: "refresh",
|
||||
metadata: { accountID: "account-one" },
|
||||
},
|
||||
[new Error("offline")],
|
||||
1_000_000,
|
||||
[Promise.resolve(cached)],
|
||||
);
|
||||
|
||||
await result.tracker.init();
|
||||
const status = await result.tracker.status("root");
|
||||
expect(status?.windows.map((window) => window.id)).toEqual([
|
||||
"codex:primary",
|
||||
"codex_luna:primary",
|
||||
]);
|
||||
expect(status?.windows[0]?.sessionConsumed).toBe(2);
|
||||
expect(status?.windows[1]?.sessionConsumed).toBe(3);
|
||||
await result.tracker.dispose();
|
||||
});
|
||||
|
||||
test("activates only for OAuth and establishes an awaited root baseline shared by children", async () => {
|
||||
const key = fixture({ type: "key", key: "secret" }, [plus]);
|
||||
await key.tracker.init();
|
||||
|
||||
Reference in New Issue
Block a user