Files
OmniRoute/tests/unit/antigravity-empty-project-selection.test.ts
Rouzbeh† 6de542b9b6 fix(providers): mark Antigravity connects with no Cloud Code projectId as degraded (#11284) (#11358)
Merged via consolidated batch validation. Production evidence (VPS docker instance): Antigravity OAuth connects ending without a Cloud Code projectId were persisted as silently active while every model call failed; now persisted as degraded. Own tests pass.
2026-08-24 12:12:33 -03:00

65 lines
2.7 KiB
TypeScript

/**
* #11284 — Selection-side safety net for Antigravity accounts with no stored
* Cloud Code projectId.
*
* Production evidence (VPS docker `omniroute`, 2026-08-24): a pool can hold
* healthy accounts WITH projectIds alongside accounts whose projectId is
* empty and which were never confirmed missing (no errorCode) — those
* empty-but-unconfirmed rows still win round-robin slots, burn the request on
* loadCodeAssist discovery + 422, and drag the whole combo circuit down.
*
* Contract pinned here (`antigravityProjectPersist.ts`, quota-strategy copy):
* - connections with an EMPTY stored projectId are skipped whenever at
* least one sibling carries one;
* - when NO connection has a stored project the pool passes through
* unchanged (fresh installs keep their lazy-discovery path — #2334);
* - confirmed-missing rows (errorCode="missing_project_id") stay excluded
* even when they carry a stale stored id (regression guard for the
* persistence-module twin `antigravityProjectPersistence.ts`).
*
* Run: node --import tsx/esm --test tests/unit/antigravity-empty-project-selection.test.ts
*/
import { test } from "node:test";
import assert from "node:assert/strict";
import { preferAntigravityConnectionsWithStoredProject } from "../../open-sse/services/antigravityProjectPersist.ts";
const withProject = { id: "a", projectId: "proj-1" };
const withoutProject = { id: "d", projectId: null, providerSpecificData: {} };
const confirmedMissingWithStaleId = {
id: "f",
errorCode: "missing_project_id",
projectId: "stale-proj",
};
test("#11284: skips empty-projectId siblings when a healthier account exists", () => {
const pool = [withoutProject, withProject];
assert.deepEqual(
preferAntigravityConnectionsWithStoredProject(pool).map((c) => c.id),
["a"]
);
});
test("#11284: skips confirmed-missing rows even with a stale stored id", () => {
const pool = [confirmedMissingWithStaleId, withProject];
assert.deepEqual(
preferAntigravityConnectionsWithStoredProject(pool).map((c) => c.id),
["a"]
);
});
test("#11284: keeps the full pool when ONLY confirmed-missing rows exist (never empty)", () => {
const pool = [confirmedMissingWithStaleId];
assert.deepEqual(preferAntigravityConnectionsWithStoredProject(pool), pool);
});
test("#11284: never empties the pool when every row lacks a projectId", () => {
const pool = [withoutProject, { id: "e", providerSpecificData: {} }];
assert.deepEqual(preferAntigravityConnectionsWithStoredProject(pool), pool);
});
test("#11284: single connection passes through untouched (lazy discovery still applies)", () => {
const pool = [withoutProject];
assert.deepEqual(preferAntigravityConnectionsWithStoredProject(pool), pool);
});