146 lines · 5.0 KB · TypeScript
RawDownload
import { afterEach, describe, expect, it } from "@effect/vitest";import { BunServices } from "@effect/platform-bun";import { mkdtempSync, rmSync } from "node:fs";import { tmpdir } from "node:os";import { join } from "node:path";import * as Effect from "effect/Effect"; import {  defaultCliServerConnectionProfile,  parseCliServerConnectionStore,  readCliServerConnectionStore,  removeCliServerConnectionProfile,  setDefaultCliServerConnectionProfile,  upsertCliServerConnectionProfile,} from "./server-profile"; const previousDataDir = process.env.EXECUTOR_DATA_DIR; afterEach(() => {  if (previousDataDir === undefined) {    delete process.env.EXECUTOR_DATA_DIR;  } else {    process.env.EXECUTOR_DATA_DIR = previousDataDir;  }}); describe("CLI server connection profiles", () => {  it("round-trips named server connections and default selection", () =>    Effect.gen(function* () {      const dataDir = mkdtempSync(join(tmpdir(), "executor-server-profiles-"));      process.env.EXECUTOR_DATA_DIR = dataDir;       try {        yield* upsertCliServerConnectionProfile({          name: "remote",          connection: {            origin: "https://executor.example/api",            auth: { kind: "bearer", token: "key_123" },            headers: {              "CF-Access-Client-Id": { kind: "env", name: "EXECUTOR_CF_ACCESS_CLIENT_ID" },            },          },          makeDefault: true,        });         const store = yield* readCliServerConnectionStore();        expect(store.defaultProfile).toBe("remote");        expect(store.profiles).toHaveLength(1);        expect(store.profiles[0]?.connection.kind).toBe("http");        expect(store.profiles[0]?.connection.origin).toBe("https://executor.example");        expect(store.profiles[0]?.connection.apiBaseUrl).toBe("https://executor.example/api");        expect(store.profiles[0]?.connection.auth).toEqual({          kind: "bearer",          token: "key_123",        });        expect(store.profiles[0]?.connection.headers).toEqual({          "CF-Access-Client-Id": { kind: "env", name: "EXECUTOR_CF_ACCESS_CLIENT_ID" },        });        expect(defaultCliServerConnectionProfile(store)?.name).toBe("remote");      } finally {        rmSync(dataDir, { recursive: true, force: true });      }    }).pipe(Effect.provide(BunServices.layer)));   it("switches and removes the default profile", () =>    Effect.gen(function* () {      const dataDir = mkdtempSync(join(tmpdir(), "executor-server-profiles-"));      process.env.EXECUTOR_DATA_DIR = dataDir;       try {        yield* upsertCliServerConnectionProfile({          name: "local",          connection: { origin: "localhost:4788" },          makeDefault: true,        });        yield* upsertCliServerConnectionProfile({          name: "remote",          connection: { origin: "https://executor.example" },          makeDefault: false,        });         const switched = yield* setDefaultCliServerConnectionProfile("remote");        expect(switched.defaultProfile).toBe("remote");         const removed = yield* removeCliServerConnectionProfile("remote");        expect(removed.defaultProfile).toBeNull();        expect(removed.profiles.map((profile) => profile.name)).toEqual(["local"]);      } finally {        rmSync(dataDir, { recursive: true, force: true });      }    }).pipe(Effect.provide(BunServices.layer)));   it("drops malformed profiles when parsing", () => {    const store = parseCliServerConnectionStore(      JSON.stringify({        version: 1,        defaultProfile: "missing",        profiles: [          { name: "valid", connection: { origin: "https://executor.example" } },          { name: "bad space", connection: { origin: "https://ignored.example" } },          { name: "no-origin", connection: {} },        ],      }),    );     expect(store.defaultProfile).toBeNull();    expect(store.profiles.map((profile) => profile.name)).toEqual(["valid"]);  });   it("preserves desktop sidecar profile kind", () => {    const store = parseCliServerConnectionStore(      JSON.stringify({        version: 1,        defaultProfile: "desktop",        profiles: [          {            name: "desktop",            connection: {              kind: "desktop-sidecar",              key: "desktop-sidecar",              origin: "http://127.0.0.1:4789",              auth: { kind: "basic", username: "executor", password: "secret" },              headers: {                "CF-Access-Client-Id": {                  kind: "env",                  name: "EXECUTOR_CF_ACCESS_CLIENT_ID",                },              },            },          },        ],      }),    );     expect(store.defaultProfile).toBe("desktop");    expect(store.profiles[0]?.connection.kind).toBe("desktop-sidecar");    expect(store.profiles[0]?.connection.auth).toEqual({      kind: "basic",      username: "executor",      password: "secret",    });    expect(store.profiles[0]?.connection.headers).toEqual({      "CF-Access-Client-Id": { kind: "env", name: "EXECUTOR_CF_ACCESS_CLIENT_ID" },    });  });});