Files
OmniRoute/tests/unit/claude-identity-version-sync.test.ts
Diego Rodrigues de Sa e Souza 0adae00c7b Release v3.8.42 (#5459)
Release v3.8.42 — full CHANGELOG in CHANGELOG.md.

CI: 103 checks green incl. CodeQL (all languages), Semgrep, all 8 unit shards,
coverage, Node 24 compat, and integration tests. Full unit suite validated
locally: 19437 pass / 0 fail. The 3 red checks are advisory and do not gate
main (no required status checks): SonarCloud/SonarQube new-code coverage gate,
and PR Test Policy (test-masking detector flagging the legitimate dead-Phind
provider removal in #5530 — reviewed, correct).

Includes cycle-close reconciliation + repair of inherited base-red tests from
#5480/#5527/#5427/#5521 that the PR->release fast-path did not exercise.
2026-06-30 06:54:29 -03:00

57 lines
2.3 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
// Claude-Code identity version is hand-bumped in lockstep across several modules
// (2.1.158 → .187 → .195 …). A silent partial bump makes one surface advertise a stale
// `claude-cli/<version>` and can break Anthropic identity gating. This guard fails on drift.
// (quota-share-hardening Phase 2 — gaps v3.8.42.)
const claudeIdentity = await import("../../open-sse/executors/claudeIdentity.ts");
const ccBridge = await import("../../open-sse/services/ccBridgeTransforms.ts");
const claudeCompat = await import("../../open-sse/services/claudeCodeCompatible.ts");
const anthropicHeaders = await import("../../open-sse/config/anthropicHeaders.ts");
const glmProvider = await import("../../open-sse/config/glmProvider.ts");
const CANONICAL = claudeIdentity.CLAUDE_CODE_VERSION;
// "claude-cli/2.1.195 (external, sdk-cli)" → "2.1.195". String ops only — never a RegExp over
// the value, per the project's anti-ReDoS contract.
function versionFromUserAgent(userAgent: string): string {
const afterSlash = userAgent.split("claude-cli/")[1] ?? "";
return afterSlash.split(" ")[0];
}
test("canonical claude-cli version constant is a sane semver value", () => {
assert.match(CANONICAL, /^\d+\.\d+\.\d+$/);
});
test("all Claude-Code identity version constants are in lockstep", () => {
assert.equal(
ccBridge.DEFAULT_CLAUDE_CODE_VERSION,
CANONICAL,
"ccBridgeTransforms.DEFAULT_CLAUDE_CODE_VERSION drifted from claudeIdentity.CLAUDE_CODE_VERSION"
);
assert.equal(
claudeCompat.CLAUDE_CODE_COMPATIBLE_VERSION,
CANONICAL,
"claudeCodeCompatible.CLAUDE_CODE_COMPATIBLE_VERSION drifted from the canonical version"
);
assert.equal(
anthropicHeaders.CLAUDE_CLI_VERSION,
CANONICAL,
"anthropicHeaders.CLAUDE_CLI_VERSION drifted from the canonical version"
);
});
test("all claude-cli User-Agent strings embed the canonical version", () => {
assert.equal(
versionFromUserAgent(claudeCompat.CLAUDE_CODE_COMPATIBLE_USER_AGENT),
CANONICAL,
"claudeCodeCompatible.CLAUDE_CODE_COMPATIBLE_USER_AGENT embeds a stale version"
);
assert.equal(
versionFromUserAgent(glmProvider.GLM_CLAUDE_CODE_USER_AGENT),
CANONICAL,
"glmProvider.GLM_CLAUDE_CODE_USER_AGENT embeds a stale version"
);
});