34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { createAssistantProviderExecutionPolicy } from "../src/services/assistantProviderExecutionPolicy";
|
|
|
|
describe("assistantProviderExecutionPolicy", () => {
|
|
const policy = createAssistantProviderExecutionPolicy();
|
|
|
|
it("normalizes provider values into explicit execution modes", () => {
|
|
expect(policy.normalizeProvider("openai")).toBe("openai");
|
|
expect(policy.normalizeProvider("local")).toBe("local");
|
|
expect(policy.normalizeProvider("other")).toBeNull();
|
|
});
|
|
|
|
it("detects llm runtime unavailability from auth and api-key failures", () => {
|
|
expect(policy.detectLlmRuntimeUnavailable("error:OpenAI API key is missing")).toBe(true);
|
|
expect(policy.detectLlmRuntimeUnavailable("authentication failed")).toBe(true);
|
|
expect(policy.detectLlmRuntimeUnavailable("normalize_failed")).toBe(false);
|
|
});
|
|
|
|
it("builds explicit mock execution contract for living-mode deep fallback", () => {
|
|
const state = policy.resolveProviderExecutionState({
|
|
llmProvider: "openai",
|
|
useMock: true,
|
|
baseUrl: "http://localhost:1234/v1"
|
|
});
|
|
|
|
expect(state.provider_mode).toBe("mock");
|
|
expect(state.normalized_provider).toBe("openai");
|
|
expect(state.use_mock).toBe(true);
|
|
expect(state.base_url_configured).toBe(true);
|
|
expect(state.living_mode_forced_deep).toBe(true);
|
|
expect(state.living_mode_forced_reason).toBe("mock_mode_keeps_deep_pipeline");
|
|
});
|
|
});
|