IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

cloudflared-connectors.test.ts

Buka raw
import { describe, expect, it } from "vitest";
import {
  connectorTokenOf,
  homeioComponentOf,
  isCloudflaredContainer,
  tunnelIdOf,
} from "@/lib/server/modules/integrations/cloudflared-connectors";

const token = (tunnel: string) =>
  Buffer.from(JSON.stringify({ a: "account", t: tunnel, s: "secret" })).toString("base64");

describe("homeioComponentOf", () => {
  it("reads the component label", () => {
    expect(
      homeioComponentOf({ Names: ["/whatever"], Labels: { "io.homeio.component": "cloudflare-tunnel" } }),
    ).toBe("cloudflare-tunnel");
  });

  it("recognises a connector created before the label existed", () => {
    expect(homeioComponentOf({ Names: ["/homeio-cloudflared"], Labels: {} })).toBe("cloudflare-tunnel");
  });

  it("leaves a user's own cloudflared app alone, even under the same name", () => {
    expect(homeioComponentOf({ Names: ["/cloudflared"], Labels: {} })).toBeNull();
    expect(
      homeioComponentOf({
        Names: ["/homeio-cloudflared"],
        Labels: { "com.docker.compose.project": "cloudflared" },
      }),
    ).toBeNull();
  });
});

describe("isCloudflaredContainer", () => {
  it("matches on the image or the command", () => {
    expect(isCloudflaredContainer({ Image: "cloudflare/cloudflared:2025.1.0" })).toBe(true);
    expect(isCloudflaredContainer({ Image: "sha256:abc", Command: "cloudflared --no-autoupdate tunnel run" })).toBe(true);
    expect(isCloudflaredContainer({ Image: "nginx:alpine", Command: "nginx -g daemon off;" })).toBe(false);
  });
});

describe("connector tokens", () => {
  it("finds the token in the command or the environment", () => {
    expect(connectorTokenOf({ Cmd: ["tunnel", "run", "--token", "abc"] })).toBe("abc");
    expect(connectorTokenOf({ Cmd: ["tunnel", "run", "--token=abc"] })).toBe("abc");
    expect(connectorTokenOf({ Cmd: ["tunnel", "run"], Env: ["PATH=/bin", "TUNNEL_TOKEN=xyz"] })).toBe("xyz");
    expect(connectorTokenOf({ Cmd: ["tunnel", "run"], Env: null })).toBeNull();
  });

  it("reads the tunnel id out of a token", () => {
    expect(tunnelIdOf(token("tunnel-1"))).toBe("tunnel-1");
    expect(tunnelIdOf("not-a-token")).toBeNull();
    expect(tunnelIdOf(null)).toBeNull();
  });
});
byte
2.219
baris
56
Jenis
ts
Commit terakhir
16 Oktober 2026