@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
135 lines (116 loc) • 3.54 kB
text/typescript
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;
}
});