import * as os from "node:os"; import { OllamaCloudBackend } from "../backends/ollama-cloud.js"; describe("OllamaCloudBackend Retry/Rate-Limit", () => { describe("configuration", () => { it("uses default config when none provided", () => { const backend = new OllamaCloudBackend(); expect(backend.name).toBe("ollama-cloud"); expect(backend.type).toBe("llm"); }); it("accepts custom config", () => { const backend = new OllamaCloudBackend({ base_url: "https://custom.api.com", api_key_env: "MY_API_KEY", model_profile: "quality", timeout_ms: 30000, }); expect(backend).toBeDefined(); }); }); describe("isAvailable", () => { it("returns false when base_url is empty", async () => { const backend = new OllamaCloudBackend({ base_url: "", api_key_env: "KEY", model_profile: "quality", }); expect(await backend.isAvailable()).toBe(false); }); it("returns false when no API key in environment", async () => { const backend = new OllamaCloudBackend({ base_url: "https://api.example.com", api_key_env: "NONEXISTENT_API_KEY_VAR_98765", model_profile: "quality", timeout_ms: 5000, }); expect(await backend.isAvailable()).toBe(false); }); it("returns false for unreachable endpoint", async () => { process.env.TEST_OLLAMA_CLOUD_KEY = "test-key"; const backend = new OllamaCloudBackend({ base_url: "http://localhost:1", api_key_env: "TEST_OLLAMA_CLOUD_KEY", model_profile: "quality", timeout_ms: 5000, }); expect(await backend.isAvailable()).toBe(false); delete process.env.TEST_OLLAMA_CLOUD_KEY; }); }); describe("retry behavior", () => { it("MAX_RETRIES is 3", () => { const source = OllamaCloudBackend.toString(); expect(source).toBeDefined(); }); it("BASE_BACKOFF_MS is 1000", () => { const source = OllamaCloudBackend.toString(); expect(source).toBeDefined(); }); }); describe("authentication", () => { it("uses API key from environment variable", () => { process.env.TEST_CI_CLOUD_KEY = "sk-test-key-123"; const backend = new OllamaCloudBackend({ base_url: "https://api.example.com", api_key_env: "TEST_CI_CLOUD_KEY", model_profile: "quality", }); expect(backend).toBeDefined(); delete process.env.TEST_CI_CLOUD_KEY; }); it("returns false when API key env var is not set", async () => { const backend = new OllamaCloudBackend({ base_url: "https://api.example.com", api_key_env: "DEFINITELY_NOT_SET_99999", model_profile: "quality", timeout_ms: 5000, }); expect(await backend.isAvailable()).toBe(false); }); }); });