@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
141 lines (122 loc) • 3.98 kB
text/typescript
/**
* Tests for the CORS module
*/
import { assertEquals, assertNotEquals } from "https://deno.land/std@0.203.0/testing/asserts.ts";
import {
applyCorsHeaders,
corsHeaders,
createCorsPreflightResponse,
handleCorsPreflightRequest,
isCorsPreflightRequest,
} from "./cors.ts";
Deno.test("corsHeaders should contain expected headers", () => {
assertEquals(typeof corsHeaders, "object", "corsHeaders should be an object");
assertEquals(corsHeaders["Access-Control-Allow-Origin"], "*", "Should allow any origin");
assertEquals(
corsHeaders["Access-Control-Allow-Methods"],
"GET, POST, PUT, DELETE, OPTIONS",
"Should allow common HTTP methods",
);
assertEquals(
corsHeaders["Access-Control-Allow-Headers"],
"Content-Type, Authorization, X-Requested-With",
"Should allow common headers",
);
});
Deno.test("applyCorsHeaders should add CORS headers to a response", () => {
// Create a response without CORS headers
const originalResponse = new Response("Test body", {
status: 200,
headers: {
"Content-Type": "text/plain",
},
});
// Apply CORS headers
const corsResponse = applyCorsHeaders(originalResponse);
// Check that the original headers are preserved
assertEquals(
corsResponse.headers.get("Content-Type"),
"text/plain",
"Original headers should be preserved",
);
// Check that CORS headers were added
assertEquals(
corsResponse.headers.get("Access-Control-Allow-Origin"),
"*",
"CORS headers should be added",
);
// Check that the status is preserved
assertEquals(corsResponse.status, 200, "Status should be preserved");
});
Deno.test("createCorsPreflightResponse should create a proper preflight response", () => {
const response = createCorsPreflightResponse();
// Check status code (204 No Content is standard for preflight)
assertEquals(response.status, 204, "Preflight response should have 204 status");
// Check CORS headers
assertEquals(
response.headers.get("Access-Control-Allow-Origin"),
"*",
"Preflight response should have CORS headers",
);
});
Deno.test("isCorsPreflightRequest should correctly identify preflight requests", () => {
// Create a preflight request
const preflightRequest = new Request("https://example.com/api", {
method: "OPTIONS",
headers: {
"Access-Control-Request-Method": "POST",
"Origin": "https://app.example.com",
},
});
// Create a regular OPTIONS request (not preflight)
const regularOptionsRequest = new Request("https://example.com/api", {
method: "OPTIONS",
});
// Create a regular GET request
const getRequest = new Request("https://example.com/api", {
method: "GET",
});
// Test identification
assertEquals(
isCorsPreflightRequest(preflightRequest),
true,
"Should identify preflight request",
);
assertEquals(
isCorsPreflightRequest(regularOptionsRequest),
false,
"Should not identify regular OPTIONS as preflight",
);
assertEquals(
isCorsPreflightRequest(getRequest),
false,
"Should not identify GET as preflight",
);
});
Deno.test("handleCorsPreflightRequest should handle preflight requests", () => {
// Create a preflight request
const preflightRequest = new Request("https://example.com/api", {
method: "OPTIONS",
headers: {
"Access-Control-Request-Method": "POST",
"Origin": "https://app.example.com",
},
});
// Create a regular request
const regularRequest = new Request("https://example.com/api", {
method: "GET",
});
// Test handling
const preflightResponse = handleCorsPreflightRequest(preflightRequest);
assertEquals(
preflightResponse.status,
204,
"Should return preflight response for preflight request",
);
const regularResponse = handleCorsPreflightRequest(regularRequest);
assertEquals(
regularResponse,
null as unknown as Response,
"Should return null for non-preflight request",
);
});