import { describe, expect, it } from "@effect/vitest";import { EnvironmentId } from "@t3tools/contracts";import * as Effect from "effect/Effect"; import { migrateLegacyConnectionCatalog } from "./migration"; describe("migrateLegacyConnectionCatalog", () => { it.effect("migrates bearer and relay-managed connections into the new catalog", () => Effect.gen(function* () { const bearerEnvironmentId = EnvironmentId.make("bearer-environment"); const relayEnvironmentId = EnvironmentId.make("relay-environment"); const catalog = yield* migrateLegacyConnectionCatalog( JSON.stringify({ connections: [ { environmentId: bearerEnvironmentId, environmentLabel: "Local Mac", pairingUrl: "https://local.example.test/pair", displayUrl: "https://local.example.test", httpBaseUrl: "https://local.example.test", wsBaseUrl: "wss://local.example.test", bearerToken: "bearer-token", authenticationMethod: "bearer", }, { environmentId: relayEnvironmentId, environmentLabel: "Cloud Mac", pairingUrl: "https://relay.example.test", displayUrl: "https://relay.example.test", httpBaseUrl: "https://relay.example.test", wsBaseUrl: "wss://relay.example.test", bearerToken: null, authenticationMethod: "dpop", relayManaged: true, }, ], }), ); expect(catalog.targets).toHaveLength(2); expect( catalog.targets.find((target) => target.environmentId === bearerEnvironmentId)?._tag, ).toBe("BearerConnectionTarget"); expect( catalog.targets.find((target) => target.environmentId === relayEnvironmentId)?._tag, ).toBe("RelayConnectionTarget"); expect(catalog.profiles).toHaveLength(1); expect(catalog.credentials).toHaveLength(1); expect(catalog.credentials[0]?.credential).toMatchObject({ _tag: "BearerConnectionCredential", token: "bearer-token", }); }), ); it.effect("drops invalid legacy bearer entries without credentials", () => Effect.gen(function* () { const catalog = yield* migrateLegacyConnectionCatalog( JSON.stringify({ connections: [ { environmentId: EnvironmentId.make("invalid-bearer"), environmentLabel: "Invalid", pairingUrl: "https://invalid.example.test/pair", displayUrl: "https://invalid.example.test", httpBaseUrl: "https://invalid.example.test", wsBaseUrl: "wss://invalid.example.test", bearerToken: null, authenticationMethod: "bearer", }, ], }), ); expect(catalog.targets).toEqual([]); }), );});
import { describe, expect, it } from "@effect/vitest";
import { EnvironmentId } from "@t3tools/contracts";
import * as Effect from "effect/Effect";
import { migrateLegacyConnectionCatalog } from "./migration";
describe("migrateLegacyConnectionCatalog", () => {
it.effect("migrates bearer and relay-managed connections into the new catalog", () =>
Effect.gen(function* () {
const bearerEnvironmentId = EnvironmentId.make("bearer-environment");
const relayEnvironmentId = EnvironmentId.make("relay-environment");
const catalog = yield* migrateLegacyConnectionCatalog(
JSON.stringify({
connections: [
{
environmentId: bearerEnvironmentId,
environmentLabel: "Local Mac",
pairingUrl: "https://local.example.test/pair",
displayUrl: "https://local.example.test",
httpBaseUrl: "https://local.example.test",
wsBaseUrl: "wss://local.example.test",
bearerToken: "bearer-token",
authenticationMethod: "bearer",
},
{
environmentId: relayEnvironmentId,
environmentLabel: "Cloud Mac",
pairingUrl: "https://relay.example.test",
displayUrl: "https://relay.example.test",
httpBaseUrl: "https://relay.example.test",
wsBaseUrl: "wss://relay.example.test",
bearerToken: null,
authenticationMethod: "dpop",
relayManaged: true,
},
],
}),
);
expect(catalog.targets).toHaveLength(2);
expect(
catalog.targets.find((target) => target.environmentId === bearerEnvironmentId)?._tag,
).toBe("BearerConnectionTarget");
expect(
catalog.targets.find((target) => target.environmentId === relayEnvironmentId)?._tag,
).toBe("RelayConnectionTarget");
expect(catalog.profiles).toHaveLength(1);
expect(catalog.credentials).toHaveLength(1);
expect(catalog.credentials[0]?.credential).toMatchObject({
_tag: "BearerConnectionCredential",
token: "bearer-token",
});
}),
);
it.effect("drops invalid legacy bearer entries without credentials", () =>
Effect.gen(function* () {
const catalog = yield* migrateLegacyConnectionCatalog(
JSON.stringify({
connections: [
{
environmentId: EnvironmentId.make("invalid-bearer"),
environmentLabel: "Invalid",
pairingUrl: "https://invalid.example.test/pair",
displayUrl: "https://invalid.example.test",
httpBaseUrl: "https://invalid.example.test",
wsBaseUrl: "wss://invalid.example.test",
bearerToken: null,
authenticationMethod: "bearer",
},
],
}),
);
expect(catalog.targets).toEqual([]);
}),
);
});