UNPKG

@agentics.org/sparc2

Version:

SPARC 2.0 - Autonomous Vector Coding Agent + MCP. SPARC 2.0, vectorized AI code analysis, is an intelligent coding agent framework built to automate and streamline software development. It combines secure execution environments, and version control into a

135 lines (116 loc) 3.54 kB
import { assertEquals, assertRejects } from "https://deno.land/std@0.203.0/testing/asserts.ts"; import { loadConfig, loadEnvConfig, type SPARCConfig } from "./config.ts"; // Mock environment type type MockEnv = { get: (key: string) => string | undefined; toObject: () => Record<string, string>; }; Deno.test("loadConfig loads valid TOML configuration", async () => { const mockToml = ` [execution] mode = "automatic" diff_mode = "file" processing = "parallel" [logging] enable = true vector_logging = true [rollback] checkpoint_enabled = true temporal_rollback = true [models] reasoning = "test-model" instruct = "test-model" `; const originalReadTextFile = Deno.readTextFile; Deno.readTextFile = () => Promise.resolve(mockToml); try { const config = await loadConfig("test.toml"); assertEquals(config.execution.mode, "automatic"); assertEquals(config.execution.diff_mode, "file"); assertEquals(config.models.reasoning, "test-model"); } finally { // Restore original function Deno.readTextFile = originalReadTextFile; } }); Deno.test("loadConfig validates required fields", async () => { const mockToml = ` [execution] mode = "automatic" diff_mode = "file" processing = "parallel" `; const originalReadTextFile = Deno.readTextFile; Deno.readTextFile = () => Promise.resolve(mockToml); try { let error: Error | undefined; try { await loadConfig("test.toml"); } catch (e) { error = e as Error; } if (!error) { throw new Error("Expected loadConfig to throw an error but it didn't"); } assertEquals(error.message, "Missing required configuration sections"); } finally { Deno.readTextFile = originalReadTextFile; } }); Deno.test("loadEnvConfig validates required environment variables", async () => { // Create mock environment const mockEnv: MockEnv = { get: (_key: string) => undefined, toObject: () => ({}), }; // Save original env const originalEnv = globalThis.Deno.env; (globalThis.Deno as any).env = mockEnv; try { await assertRejects( async () => await loadEnvConfig(), Error, "required environment variables", ); } finally { // Restore original env (globalThis.Deno as any).env = originalEnv; } }); Deno.test("loadEnvConfig returns valid config when all variables present", async () => { // Mock environment with all required variables const mockEnv: MockEnv = { get: (key: string) => ({ OPENAI_API_KEY: "test-key", GITHUB_TOKEN: "test-token", GITHUB_ORG: "test-org", EDGE_FUNCTION_URL: "http://test.com", E2B_API_KEY: "test-key", VECTOR_DB_URL: "test-url", })[key], toObject: () => ({ OPENAI_API_KEY: "test-key", GITHUB_TOKEN: "test-token", GITHUB_ORG: "test-org", EDGE_FUNCTION_URL: "http://test.com", E2B_API_KEY: "test-key", VECTOR_DB_URL: "test-url", }), }; // Save original env const originalEnv = globalThis.Deno.env; (globalThis.Deno as any).env = mockEnv; try { const config = await loadEnvConfig(); assertEquals(config.OPENAI_API_KEY, "test-key"); assertEquals(config.GITHUB_TOKEN, "test-token"); assertEquals(config.GITHUB_ORG, "test-org"); assertEquals(config.EDGE_FUNCTION_URL, "http://test.com"); assertEquals(config.E2B_API_KEY, "test-key"); assertEquals(config.VECTOR_DB_URL, "test-url"); } finally { // Restore original env (globalThis.Deno as any).env = originalEnv; } });