import { EnvironmentId } from "@t3tools/contracts";import { describe, expect, it } from "@effect/vitest";import * as Schema from "effect/Schema"; import * as TokenStore from "../authorization/tokenStore.ts";import { BearerConnectionCredential, BearerConnectionProfile, BearerConnectionRegistration, RelayConnectionRegistration, SshConnectionProfile, SshConnectionRegistration,} from "../connection/catalog.ts";import { BearerConnectionTarget, RelayConnectionTarget, SshConnectionTarget,} from "../connection/model.ts";import { ConnectionCatalogDocument, EMPTY_CONNECTION_CATALOG_DOCUMENT, putRemoteDpopTokenInCatalog, registerConnectionInCatalog, removeConnectionFromCatalog,} from "./storageDocument.ts"; const ENVIRONMENT_ID = EnvironmentId.make("environment-1"); const RELAY_TARGET = new RelayConnectionTarget({ environmentId: ENVIRONMENT_ID, label: "Remote",});const BEARER_TARGET = new BearerConnectionTarget({ environmentId: ENVIRONMENT_ID, label: "Remote", connectionId: "bearer-1",});const BEARER_PROFILE = new BearerConnectionProfile({ connectionId: BEARER_TARGET.connectionId, environmentId: ENVIRONMENT_ID, label: BEARER_TARGET.label, httpBaseUrl: "https://remote.example.test", wsBaseUrl: "wss://remote.example.test",});const BEARER_CREDENTIAL = new BearerConnectionCredential({ token: "bearer-token",});const REMOTE_TOKEN = new TokenStore.RemoteDpopAccessToken({ environmentId: ENVIRONMENT_ID, label: "Remote", endpoint: { httpBaseUrl: "https://remote.example.test", wsBaseUrl: "wss://remote.example.test", providerKind: "cloudflare_tunnel", }, accessToken: "dpop-token", expiresAtEpochMs: 1_000_000, dpopThumbprint: "thumbprint",}); describe("ConnectionCatalogDocument", () => { it.each([ { name: "legacy", accountId: undefined }, { name: "account-bound", accountId: "account-1" }, ])("round-trips a catalog containing a $name DPoP token", ({ accountId }) => { const token = new TokenStore.RemoteDpopAccessToken({ ...REMOTE_TOKEN, ...(accountId === undefined ? {} : { accountId }), }); const document = { ...EMPTY_CONNECTION_CATALOG_DOCUMENT, targets: [RELAY_TARGET], remoteDpopTokens: [token], }; const schema = Schema.fromJsonString(ConnectionCatalogDocument); const restored = Schema.decodeUnknownSync(schema)(Schema.encodeSync(schema)(document)); expect(restored).toEqual(document); expect(restored.remoteDpopTokens[0]?.accountId).toBe(accountId); }); it("registers a bearer connection as one catalog mutation", () => { const document = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new BearerConnectionRegistration({ target: BEARER_TARGET, profile: BEARER_PROFILE, credential: BEARER_CREDENTIAL, }), ); expect(document.targets).toEqual([BEARER_TARGET]); expect(document.profiles).toEqual([BEARER_PROFILE]); expect(document.credentials).toEqual([ { connectionId: BEARER_TARGET.connectionId, credential: BEARER_CREDENTIAL, }, ]); }); it("replaces obsolete connection metadata without discarding a reusable DPoP token", () => { const bearer = registerConnectionInCatalog( { ...EMPTY_CONNECTION_CATALOG_DOCUMENT, remoteDpopTokens: [REMOTE_TOKEN], }, new BearerConnectionRegistration({ target: BEARER_TARGET, profile: BEARER_PROFILE, credential: BEARER_CREDENTIAL, }), ); const relayTarget = new RelayConnectionTarget({ environmentId: ENVIRONMENT_ID, label: "Remote", }); const relay = registerConnectionInCatalog( bearer, new RelayConnectionRegistration({ target: relayTarget }), ); expect(relay.targets).toEqual([relayTarget]); expect(relay.profiles).toEqual([]); expect(relay.credentials).toEqual([]); expect(relay.remoteDpopTokens).toEqual([REMOTE_TOKEN]); }); it("removes every catalog record owned by an explicit disconnect", () => { const registered = registerConnectionInCatalog( { ...EMPTY_CONNECTION_CATALOG_DOCUMENT, remoteDpopTokens: [REMOTE_TOKEN], }, new BearerConnectionRegistration({ target: BEARER_TARGET, profile: BEARER_PROFILE, credential: BEARER_CREDENTIAL, }), ); expect(removeConnectionFromCatalog(registered, BEARER_TARGET)).toEqual( EMPTY_CONNECTION_CATALOG_DOCUMENT, ); }); it("stores a DPoP token for a registered relay environment", () => { const registered = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new RelayConnectionRegistration({ target: RELAY_TARGET }), ); expect(putRemoteDpopTokenInCatalog(registered, REMOTE_TOKEN)).toEqual({ ...registered, remoteDpopTokens: [REMOTE_TOKEN], }); }); it("ignores a late DPoP token after the environment is removed", () => { const registered = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new RelayConnectionRegistration({ target: RELAY_TARGET }), ); const removed = removeConnectionFromCatalog(registered, RELAY_TARGET); expect(putRemoteDpopTokenInCatalog(removed, REMOTE_TOKEN)).toEqual( EMPTY_CONNECTION_CATALOG_DOCUMENT, ); }); it("removes a DPoP token stored before the environment is removed", () => { const registered = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new RelayConnectionRegistration({ target: RELAY_TARGET }), ); const refreshed = putRemoteDpopTokenInCatalog(registered, REMOTE_TOKEN); expect(removeConnectionFromCatalog(refreshed, RELAY_TARGET)).toEqual( EMPTY_CONNECTION_CATALOG_DOCUMENT, ); }); it("does not store DPoP tokens for a different environment or connection kind", () => { const bearer = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new BearerConnectionRegistration({ target: BEARER_TARGET, profile: BEARER_PROFILE, credential: BEARER_CREDENTIAL, }), ); const otherRelay = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new RelayConnectionRegistration({ target: new RelayConnectionTarget({ environmentId: EnvironmentId.make("environment-2"), label: "Other relay", }), }), ); expect(putRemoteDpopTokenInCatalog(bearer, REMOTE_TOKEN)).toBe(bearer); expect(putRemoteDpopTokenInCatalog(otherRelay, REMOTE_TOKEN)).toBe(otherRelay); }); it("persists the normalized SSH profile beside its target", () => { const target = new SshConnectionTarget({ environmentId: ENVIRONMENT_ID, label: "SSH", connectionId: "ssh-1", }); const profile = new SshConnectionProfile({ connectionId: target.connectionId, environmentId: target.environmentId, label: target.label, target: { alias: "devbox", hostname: "devbox.example.test", username: "developer", port: 22, }, }); const document = registerConnectionInCatalog( EMPTY_CONNECTION_CATALOG_DOCUMENT, new SshConnectionRegistration({ target, profile }), ); expect(document.targets).toEqual([target]); expect(document.profiles).toEqual([profile]); expect(document.credentials).toEqual([]); });});
import { EnvironmentId } from "@t3tools/contracts";
import { describe, expect, it } from "@effect/vitest";
import * as Schema from "effect/Schema";
import * as TokenStore from "../authorization/tokenStore.ts";
import {
BearerConnectionCredential,
BearerConnectionProfile,
BearerConnectionRegistration,
RelayConnectionRegistration,
SshConnectionProfile,
SshConnectionRegistration,
} from "../connection/catalog.ts";
import {
BearerConnectionTarget,
RelayConnectionTarget,
SshConnectionTarget,
} from "../connection/model.ts";
import {
ConnectionCatalogDocument,
EMPTY_CONNECTION_CATALOG_DOCUMENT,
putRemoteDpopTokenInCatalog,
registerConnectionInCatalog,
removeConnectionFromCatalog,
} from "./storageDocument.ts";
const ENVIRONMENT_ID = EnvironmentId.make("environment-1");
const RELAY_TARGET = new RelayConnectionTarget({
environmentId: ENVIRONMENT_ID,
label: "Remote",
});
const BEARER_TARGET = new BearerConnectionTarget({
environmentId: ENVIRONMENT_ID,
label: "Remote",
connectionId: "bearer-1",
});
const BEARER_PROFILE = new BearerConnectionProfile({
connectionId: BEARER_TARGET.connectionId,
environmentId: ENVIRONMENT_ID,
label: BEARER_TARGET.label,
httpBaseUrl: "https://remote.example.test",
wsBaseUrl: "wss://remote.example.test",
});
const BEARER_CREDENTIAL = new BearerConnectionCredential({
token: "bearer-token",
});
const REMOTE_TOKEN = new TokenStore.RemoteDpopAccessToken({
environmentId: ENVIRONMENT_ID,
label: "Remote",
endpoint: {
httpBaseUrl: "https://remote.example.test",
wsBaseUrl: "wss://remote.example.test",
providerKind: "cloudflare_tunnel",
},
accessToken: "dpop-token",
expiresAtEpochMs: 1_000_000,
dpopThumbprint: "thumbprint",
});
describe("ConnectionCatalogDocument", () => {
it.each([
{ name: "legacy", accountId: undefined },
{ name: "account-bound", accountId: "account-1" },
])("round-trips a catalog containing a $name DPoP token", ({ accountId }) => {
const token = new TokenStore.RemoteDpopAccessToken({
...REMOTE_TOKEN,
...(accountId === undefined ? {} : { accountId }),
});
const document = {
...EMPTY_CONNECTION_CATALOG_DOCUMENT,
targets: [RELAY_TARGET],
remoteDpopTokens: [token],
};
const schema = Schema.fromJsonString(ConnectionCatalogDocument);
const restored = Schema.decodeUnknownSync(schema)(Schema.encodeSync(schema)(document));
expect(restored).toEqual(document);
expect(restored.remoteDpopTokens[0]?.accountId).toBe(accountId);
});
it("registers a bearer connection as one catalog mutation", () => {
const document = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new BearerConnectionRegistration({
target: BEARER_TARGET,
profile: BEARER_PROFILE,
credential: BEARER_CREDENTIAL,
}),
);
expect(document.targets).toEqual([BEARER_TARGET]);
expect(document.profiles).toEqual([BEARER_PROFILE]);
expect(document.credentials).toEqual([
{
connectionId: BEARER_TARGET.connectionId,
credential: BEARER_CREDENTIAL,
},
]);
});
it("replaces obsolete connection metadata without discarding a reusable DPoP token", () => {
const bearer = registerConnectionInCatalog(
{
...EMPTY_CONNECTION_CATALOG_DOCUMENT,
remoteDpopTokens: [REMOTE_TOKEN],
},
new BearerConnectionRegistration({
target: BEARER_TARGET,
profile: BEARER_PROFILE,
credential: BEARER_CREDENTIAL,
}),
);
const relayTarget = new RelayConnectionTarget({
environmentId: ENVIRONMENT_ID,
label: "Remote",
});
const relay = registerConnectionInCatalog(
bearer,
new RelayConnectionRegistration({ target: relayTarget }),
);
expect(relay.targets).toEqual([relayTarget]);
expect(relay.profiles).toEqual([]);
expect(relay.credentials).toEqual([]);
expect(relay.remoteDpopTokens).toEqual([REMOTE_TOKEN]);
});
it("removes every catalog record owned by an explicit disconnect", () => {
const registered = registerConnectionInCatalog(
{
...EMPTY_CONNECTION_CATALOG_DOCUMENT,
remoteDpopTokens: [REMOTE_TOKEN],
},
new BearerConnectionRegistration({
target: BEARER_TARGET,
profile: BEARER_PROFILE,
credential: BEARER_CREDENTIAL,
}),
);
expect(removeConnectionFromCatalog(registered, BEARER_TARGET)).toEqual(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
);
});
it("stores a DPoP token for a registered relay environment", () => {
const registered = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new RelayConnectionRegistration({ target: RELAY_TARGET }),
);
expect(putRemoteDpopTokenInCatalog(registered, REMOTE_TOKEN)).toEqual({
...registered,
remoteDpopTokens: [REMOTE_TOKEN],
});
});
it("ignores a late DPoP token after the environment is removed", () => {
const registered = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new RelayConnectionRegistration({ target: RELAY_TARGET }),
);
const removed = removeConnectionFromCatalog(registered, RELAY_TARGET);
expect(putRemoteDpopTokenInCatalog(removed, REMOTE_TOKEN)).toEqual(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
);
});
it("removes a DPoP token stored before the environment is removed", () => {
const registered = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new RelayConnectionRegistration({ target: RELAY_TARGET }),
);
const refreshed = putRemoteDpopTokenInCatalog(registered, REMOTE_TOKEN);
expect(removeConnectionFromCatalog(refreshed, RELAY_TARGET)).toEqual(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
);
});
it("does not store DPoP tokens for a different environment or connection kind", () => {
const bearer = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new BearerConnectionRegistration({
target: BEARER_TARGET,
profile: BEARER_PROFILE,
credential: BEARER_CREDENTIAL,
}),
);
const otherRelay = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new RelayConnectionRegistration({
target: new RelayConnectionTarget({
environmentId: EnvironmentId.make("environment-2"),
label: "Other relay",
}),
}),
);
expect(putRemoteDpopTokenInCatalog(bearer, REMOTE_TOKEN)).toBe(bearer);
expect(putRemoteDpopTokenInCatalog(otherRelay, REMOTE_TOKEN)).toBe(otherRelay);
});
it("persists the normalized SSH profile beside its target", () => {
const target = new SshConnectionTarget({
environmentId: ENVIRONMENT_ID,
label: "SSH",
connectionId: "ssh-1",
});
const profile = new SshConnectionProfile({
connectionId: target.connectionId,
environmentId: target.environmentId,
label: target.label,
target: {
alias: "devbox",
hostname: "devbox.example.test",
username: "developer",
port: 22,
},
});
const document = registerConnectionInCatalog(
EMPTY_CONNECTION_CATALOG_DOCUMENT,
new SshConnectionRegistration({ target, profile }),
);
expect(document.targets).toEqual([target]);
expect(document.profiles).toEqual([profile]);
expect(document.credentials).toEqual([]);
});
});