42 lines
1.4 KiB
TypeScript
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",
|
|
});
|
|
});
|
|
});
|