test(video): preserve daily quota lockout semantics

This commit is contained in:
diegosouzapw
2026-08-27 02:17:21 -03:00
parent 132ad5f16d
commit b945e3c80e

View File

@@ -1,34 +1,41 @@
import assert from "node:assert/strict";
import test from "node:test";
import { resolveDailyQuotaLockoutModel } from "../../src/sse/handlers/chatPredicates.ts";
import { resolveDailyQuotaModelViews } from "../../src/sse/handlers/chatPredicates.ts";
test("daily quota model uses the upstream model token for ordinary requests", () => {
assert.equal(
resolveDailyQuotaLockoutModel(
test("daily quota model uses the upstream model token for ordinary operational and retained views", () => {
assert.deepEqual(
resolveDailyQuotaModelViews(
"You have exceeded today's quota for model moonshotai/Kimi-K2.5, try tomorrow",
"Kimi-K2.5",
false
),
"moonshotai/Kimi-K2.5"
{
operationalModel: "moonshotai/Kimi-K2.5",
retainedModel: "moonshotai/Kimi-K2.5",
}
);
});
test("daily quota model never persists a transcript echo for a sensitive video request", () => {
test("daily quota keeps the raw operational key but redacts its retained sensitive view", () => {
const transcriptSentinel = "PRIVATE_DAILY_QUOTA_TRANSCRIPT_SENTINEL";
const resolved = resolveDailyQuotaLockoutModel(
const views = resolveDailyQuotaModelViews(
`You have exceeded today's quota for model ${transcriptSentinel}, try tomorrow`,
"server-resolved-model",
true
);
assert.equal(resolved, "server-resolved-model");
assert.equal(resolved.includes(transcriptSentinel), false);
assert.equal(views.operationalModel, transcriptSentinel);
assert.equal(views.retainedModel, "[omitted: video transcript]");
assert.equal(views.retainedModel.includes(transcriptSentinel), false);
});
test("daily quota model falls back to the server-resolved model when no token is present", () => {
assert.equal(
resolveDailyQuotaLockoutModel("daily quota exhausted", "server-resolved-model", false),
"server-resolved-model"
assert.deepEqual(
resolveDailyQuotaModelViews("daily quota exhausted", "server-resolved-model", true),
{
operationalModel: "server-resolved-model",
retainedModel: "server-resolved-model",
}
);
});