import { describe, expect, it } from "@effect/vitest"; import { AuthTemplateSlug, ConnectionAddress, ConnectionName, IntegrationSlug, ProviderKey, type Connection, type HealthCheckResult, } from "@executor-js/sdk/shared"; import { connectionRowPolicy } from "./managed-connection"; const connection = (overrides: Partial = {}): Connection => ({ owner: "org", integration: IntegrationSlug.make("linear_mcp"), name: ConnectionName.make("main"), template: AuthTemplateSlug.make("oauth2"), provider: ProviderKey.make("default"), address: ConnectionAddress.make("linear_mcp.org.main"), ...overrides, }); const health = (overrides: Partial = {}): HealthCheckResult => ({ status: "healthy", checkedAt: 0, ...overrides, }); describe("connectionRowPolicy", () => { it("offers Remove and Reconnect on an ordinary connection", () => { const policy = connectionRowPolicy(connection(), health()); expect(policy).toMatchObject({ managed: false, canRemove: true, canReconnect: true }); }); it("withholds Remove on an enterprise-managed connection", () => { // There is nothing local to delete: renewal re-runs the ID-JAG chain from // the stored assertion, so a row that vanished would claim a revocation // that did not happen — the provider still authorizes the member. expect(connectionRowPolicy(connection({ enterpriseManaged: true }), health()).canRemove).toBe( false, ); }); it("withholds Reconnect on an enterprise-managed connection", () => { // Reconnect exists to re-consent through the browser. This profile has no // consent step, and the console holds no identity assertion to present. expect( connectionRowPolicy(connection({ enterpriseManaged: true }), health()).canReconnect, ).toBe(false); }); it("withholds Reconnect from an ORDINARY connection an administrator blocked", () => { // The interactive flow is exactly the route the identity provider just // closed; offering it would route the user around the decision. const policy = connectionRowPolicy( connection(), health({ status: "expired", blockedByAdmin: true }), ); expect(policy.canReconnect).toBe(false); // Removing an ordinary connection is still the member's own call. expect(policy.canRemove).toBe(true); }); it("reads the administrator verdict from the field, never the status word", () => { expect(connectionRowPolicy(connection(), health({ status: "expired" })).blockedByAdmin).toBe( false, ); }); it("surfaces the provider's code only while the block stands", () => { expect( connectionRowPolicy( connection(), health({ blockedByAdmin: true, oauthErrorCode: "invalid_target" }), ).oauthErrorCode, ).toBe("invalid_target"); // A code left over from some other refusal is not an administrator // decision, and must not be presented as one. expect( connectionRowPolicy(connection(), health({ oauthErrorCode: "invalid_grant" })).oauthErrorCode, ).toBeNull(); }); it("treats a never-checked connection as unblocked", () => { expect(connectionRowPolicy(connection({ enterpriseManaged: true }), null)).toMatchObject({ managed: true, blockedByAdmin: false, oauthErrorCode: null, }); }); it("does not infer managed state from an absent field", () => { // `enterpriseManaged` is projected server-side from the connection's // persisted state. An older row that carries nothing is ordinary, not // ambiguous. expect(connectionRowPolicy(connection(), undefined).managed).toBe(false); }); });