109 lines · 3.0 KB · TypeScript
RawDownload
import * as Schema from "effect/Schema";import { describe, expect, it } from "vitest"; import { ServerProvider } from "./server.ts"; const decodeServerProvider = Schema.decodeUnknownSync(ServerProvider); describe("ServerProvider", () => {  it("defaults capability arrays when decoding provider snapshots", () => {    const parsed = decodeServerProvider({      instanceId: "codex",      driver: "codex",      enabled: true,      installed: true,      version: "1.0.0",      status: "ready",      auth: {        status: "authenticated",      },      checkedAt: "2026-04-10T00:00:00.000Z",      models: [],    });     expect(parsed.slashCommands).toEqual([]);    expect(parsed.skills).toEqual([]);    expect(parsed.versionAdvisory).toBeUndefined();    expect(parsed.updateState).toBeUndefined();  });   it("defaults one-click update support when decoding older advisory snapshots", () => {    const parsed = decodeServerProvider({      instanceId: "codex",      driver: "codex",      enabled: true,      installed: true,      version: "1.0.0",      status: "ready",      auth: {        status: "authenticated",      },      checkedAt: "2026-04-10T00:00:00.000Z",      models: [],      versionAdvisory: {        status: "behind_latest",        currentVersion: "1.0.0",        latestVersion: "1.0.1",        updateCommand: "npm install -g @openai/codex@latest",        checkedAt: "2026-04-10T00:00:00.000Z",        message: "Update available.",      },    });     expect(parsed.versionAdvisory?.canUpdate).toBe(false);  });   it("decodes continuation group metadata", () => {    const parsed = decodeServerProvider({      instanceId: "codex_personal",      driver: "codex",      continuation: { groupKey: "codex:home:/Users/julius/.codex" },      enabled: true,      installed: true,      version: "1.0.0",      status: "ready",      auth: {        status: "authenticated",      },      checkedAt: "2026-04-10T00:00:00.000Z",      models: [],    });     expect(parsed.continuation?.groupKey).toBe("codex:home:/Users/julius/.codex");  });   it("decodes provider compatibility advisories", () => {    const parsed = decodeServerProvider({      instanceId: "codex",      driver: "codex",      enabled: true,      installed: true,      version: "0.128.0",      status: "error",      auth: {        status: "authenticated",      },      checkedAt: "2026-04-10T00:00:00.000Z",      models: [],      compatibilityAdvisory: {        status: "broken",        severity: "error",        currentVersion: "0.128.0",        message: "Known incompatible.",        recommendedRange: ">=0.129.0",        recommendedVersion: "0.129.0",        ranges: [          {            status: "supported",            range: ">=0.129.0",            label: "Known working",          },        ],      },    });     expect(parsed.compatibilityAdvisory?.status).toBe("broken");    expect(parsed.compatibilityAdvisory?.recommendedVersion).toBe("0.129.0");    expect(parsed.compatibilityAdvisory?.ranges).toHaveLength(1);  });});