Files
diegosouzapw--omniroute/tests/unit/antigravity-client-profile.test.ts
2026-07-13 13:39:12 +08:00

144 lines
5.0 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { createRequire } from "node:module";
import { normalizeAntigravityClientProfile } from "../../src/shared/constants/antigravityClientProfile.ts";
import {
applyAntigravityClientProfileHeaders,
getAntigravityBootstrapHeaders,
antigravityHarnessUserAgent,
getAntigravityClientProfile,
} from "../../open-sse/services/antigravityClientProfile.ts";
import { antigravityUserAgent } from "../../open-sse/services/antigravityHeaders.ts";
import { deriveAntigravityMachineId } from "../../open-sse/services/antigravityIdentity.ts";
import {
seedAntigravityVersionCache,
clearAntigravityVersionCache,
} from "../../open-sse/services/antigravityVersion.ts";
const require = createRequire(import.meta.url);
const { machineIdSync } = require("node-machine-id") as {
machineIdSync: (original?: boolean) => string;
};
test.afterEach(() => {
clearAntigravityVersionCache();
});
test("normalizeAntigravityClientProfile maps cli/sdk aliases to harness", () => {
assert.equal(normalizeAntigravityClientProfile("cli"), "harness");
assert.equal(normalizeAntigravityClientProfile("SDK"), "harness");
assert.equal(normalizeAntigravityClientProfile("ide"), "ide");
assert.equal(normalizeAntigravityClientProfile(undefined), "ide");
});
test("getAntigravityClientProfile reads providerSpecificData.clientProfile per connection", () => {
assert.equal(
getAntigravityClientProfile({
providerSpecificData: { clientProfile: "harness" },
}),
"harness"
);
assert.equal(getAntigravityClientProfile({ providerSpecificData: {} }), "ide");
});
test("applyAntigravityClientProfileHeaders uses IDE fingerprint by default", () => {
seedAntigravityVersionCache("4.2.0");
const headers: Record<string, string> = {
Authorization: "Bearer token",
"Content-Type": "application/json",
};
applyAntigravityClientProfileHeaders(
headers,
{ connectionId: "conn-1", providerSpecificData: {} },
{ project: "project-1" }
);
assert.match(headers["User-Agent"], /^Antigravity\/4\.2\.0 /);
assert.equal(headers["x-client-name"], "antigravity");
assert.equal(headers["x-client-version"], "4.2.0");
assert.equal(typeof headers["x-machine-id"], "string");
assert.equal(typeof headers["x-vscode-sessionid"], "string");
assert.equal(headers["x-goog-user-project"], "project-1");
assert.equal(headers["X-Goog-Api-Client"], undefined);
});
test("antigravityUserAgent matches Antigravity Manager platform fingerprints", () => {
assert.equal(
antigravityUserAgent("4.2.0", "darwin"),
"Antigravity/4.2.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/142.0.7444.175 Electron/39.2.3"
);
assert.equal(
antigravityUserAgent("4.2.0", "win32"),
"Antigravity/4.2.0 (Windows NT 10.0; Win64; x64) Chrome/142.0.7444.175 Electron/39.2.3"
);
assert.equal(
antigravityUserAgent("4.2.0", "linux"),
"Antigravity/4.2.0 (X11; Linux x86_64) Chrome/142.0.7444.175 Electron/39.2.3"
);
});
test("deriveAntigravityMachineId uses the raw system machine id like Antigravity Manager", () => {
let systemMachineId: string | null = null;
try {
systemMachineId = machineIdSync(true);
} catch {
systemMachineId = null;
}
if (!systemMachineId) return;
assert.equal(deriveAntigravityMachineId(), systemMachineId);
});
test("antigravityHarnessUserAgent uses Go harness platform and arch names", () => {
assert.equal(
antigravityHarnessUserAgent("2.1.1", "darwin", "arm64"),
"antigravity/2.1.1 darwin/arm64"
);
assert.equal(
antigravityHarnessUserAgent("2.1.1", "win32", "x64"),
"antigravity/2.1.1 windows/amd64"
);
assert.equal(
antigravityHarnessUserAgent("2.1.1", "linux", "x64"),
"antigravity/2.1.1 linux/amd64"
);
});
test("getAntigravityBootstrapHeaders uses SDK loadCodeAssist harness fingerprint", () => {
seedAntigravityVersionCache("2.1.1");
const headers = getAntigravityBootstrapHeaders("harness", "token");
assert.equal(headers.Authorization, "Bearer token");
assert.equal(
headers["User-Agent"],
`${antigravityHarnessUserAgent("2.1.1")} google-api-nodejs-client/10.3.0`
);
assert.equal(headers["X-Goog-Api-Client"], "gl-node/22.21.1");
assert.equal(headers["Client-Metadata"], undefined);
});
test("applyAntigravityClientProfileHeaders uses harness fingerprint when configured", () => {
seedAntigravityVersionCache("4.2.0");
const headers: Record<string, string> = {
Authorization: "Bearer token",
"Content-Type": "application/json",
"x-client-name": "antigravity",
"x-vscode-sessionid": "old-session",
};
applyAntigravityClientProfileHeaders(
headers,
{ connectionId: "conn-2", providerSpecificData: { clientProfile: "harness" } },
{ project: "project-2" }
);
assert.equal(headers["User-Agent"], antigravityHarnessUserAgent("4.2.0"));
assert.equal(headers["X-Goog-Api-Client"], undefined);
assert.equal(headers["x-client-name"], undefined);
assert.equal(headers["x-vscode-sessionid"], undefined);
assert.equal(headers["x-goog-user-project"], "project-2");
});