import assert from "node:assert/strict";
import { test } from "bun:test";

import { publicExposureCaddyBlock } from "./public-exposure";

test("public exposure leaves auth routes on cloud-web same-origin proxy", () => {
  const block = publicExposureCaddyBlock({
    hostname: "hwlab.example.test",
    caddyTls: "auto",
    responseHeaderTimeoutSeconds: 600,
    webProxy: {
      name: "hwlab-cloud-web",
      localIP: "hwlab-cloud-web.hwlab-v03.svc.cluster.local",
      localPort: 8080,
      remotePort: 22090,
    },
    apiProxy: {
      name: "hwlab-edge-proxy",
      localIP: "hwlab-edge-proxy.hwlab-v03.svc.cluster.local",
      localPort: 6667,
      remotePort: 22089,
    },
    extraProxies: [],
  } as never);

  assert.match(block, /@api path \/health\* \/v1\* \/json-rpc\* \/openapi\* \/docs\* \/swagger\*/u);
  assert.doesNotMatch(block, /@api path[^\n]*\/auth\*/u);
  assert.match(block, /handle @api \{\n\s+reverse_proxy 127\.0\.0\.1:22089/u);
  assert.match(block, /handle \{\n\s+reverse_proxy 127\.0\.0\.1:22090/u);
});
