Files
cfw-gateway/tests/route-policy.test.ts

42 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { resolveRoute } from "../src/route-policy";
import type { Env } from "../src/env";
const env: Env = {
AUTH: { fetch: async () => new Response("auth") },
OPS: { fetch: async () => new Response("ops") },
SCHEDULER: { fetch: async () => new Response("scheduler") },
};
describe("route policy", () => {
it("routes docs and schema to the gateway", () => {
expect(resolveRoute(new Request("http://gateway.local/docs"), env)).toEqual({
kind: "gateway-docs",
});
expect(resolveRoute(new Request("http://gateway.local/openapi.json"), env)).toEqual({
kind: "gateway-openapi",
});
expect(resolveRoute(new Request("http://gateway.local/mf-manifest.json"), env)).toEqual({
kind: "gateway-plugin-manifest",
});
});
it("routes each service prefix to its service binding", () => {
expect(resolveRoute(new Request("http://gateway.local/api/auth/reference"), env)).toEqual({
kind: "auth",
});
expect(resolveRoute(new Request("http://gateway.local/api/ops/observations"), env)).toEqual({
kind: "ops",
});
expect(resolveRoute(new Request("http://gateway.local/api/scheduler/jobs"), env)).toEqual({
kind: "scheduler",
});
});
it("routes unknown paths to not found", () => {
expect(resolveRoute(new Request("http://gateway.local/app"), env)).toEqual({
kind: "not-found",
});
});
});