mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-01 04:42:10 +03:00
72 lines
2.8 KiB
TypeScript
72 lines
2.8 KiB
TypeScript
// #6142 — devin cloud-agent provider validator + static model catalog wiring.
|
|
// Regression guard for the "not supported" fallback devin used to always hit on the
|
|
// generic Providers config page (parity with the existing jules cloud-agent wiring).
|
|
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import { validateProviderApiKey } from "../../src/lib/providers/validation.ts";
|
|
import { validateDevinCloudAgentProvider } from "../../src/lib/providers/validation/webProvidersB.ts";
|
|
import { getStaticModelsForProvider } from "../../src/lib/providers/staticModels.ts";
|
|
|
|
test("#6142: devin cloud-agent validator is wired into the SPECIALTY_VALIDATORS dispatcher", async () => {
|
|
const originalFetch = globalThis.fetch;
|
|
globalThis.fetch = (async () =>
|
|
new Response("{}", { status: 401 })) as unknown as typeof fetch;
|
|
try {
|
|
const result = await validateProviderApiKey({
|
|
provider: "devin",
|
|
apiKey: "cog_bad_key",
|
|
});
|
|
assert.equal(result.valid, false);
|
|
assert.equal(result.error, "Invalid API key");
|
|
assert.notEqual(result.unsupported, true);
|
|
} finally {
|
|
globalThis.fetch = originalFetch;
|
|
}
|
|
});
|
|
|
|
test("#6142: validateDevinCloudAgentProvider maps 401 to Invalid API key", async () => {
|
|
const originalFetch = globalThis.fetch;
|
|
globalThis.fetch = (async () =>
|
|
new Response("{}", { status: 401 })) as unknown as typeof fetch;
|
|
try {
|
|
const result = await validateDevinCloudAgentProvider({ apiKey: "bad-key" });
|
|
assert.equal(result.valid, false);
|
|
assert.equal(result.error, "Invalid API key");
|
|
} finally {
|
|
globalThis.fetch = originalFetch;
|
|
}
|
|
});
|
|
|
|
test("#6142: validateDevinCloudAgentProvider maps 403 to Invalid API key", async () => {
|
|
const originalFetch = globalThis.fetch;
|
|
globalThis.fetch = (async () =>
|
|
new Response("{}", { status: 403 })) as unknown as typeof fetch;
|
|
try {
|
|
const result = await validateDevinCloudAgentProvider({ apiKey: "bad-key" });
|
|
assert.equal(result.valid, false);
|
|
assert.equal(result.error, "Invalid API key");
|
|
} finally {
|
|
globalThis.fetch = originalFetch;
|
|
}
|
|
});
|
|
|
|
test("#6142: validateDevinCloudAgentProvider accepts a 2xx probe as valid", async () => {
|
|
const originalFetch = globalThis.fetch;
|
|
globalThis.fetch = (async () =>
|
|
new Response(JSON.stringify({ sessions: [] }), { status: 200 })) as unknown as typeof fetch;
|
|
try {
|
|
const result = await validateDevinCloudAgentProvider({ apiKey: "cog_good_key" });
|
|
assert.equal(result.valid, true);
|
|
assert.equal(result.error, null);
|
|
} finally {
|
|
globalThis.fetch = originalFetch;
|
|
}
|
|
});
|
|
|
|
test("#6142: devin exposes a static model catalog for the 'Available Models' UI (parity with jules)", () => {
|
|
const models = getStaticModelsForProvider("devin");
|
|
assert.ok(Array.isArray(models) && models.length > 0);
|
|
assert.equal(models[0].id, "devin");
|
|
});
|