75 lines · 2.5 KB · TypeScript
RawDownload
import { EnvironmentAuthInvalidError } from "@t3tools/contracts";import { RelayAuthInvalidError } from "@t3tools/contracts/relay";import { describe, expect, it } from "@effect/vitest"; import { mapManagedRelayError, mapRemoteDpopEnvironmentError } from "./errors.ts";import { DPOP_RETRY_HINT, DPOP_UNKNOWN_HINT } from "../relay/errorPresentation.ts";import { ManagedRelayRequestFailedError } from "../relay/managedRelay.ts"; describe("mapManagedRelayError", () => {  it("presents clock skew as one possible cause for a generic DPoP error", () => {    const mapped = mapManagedRelayError(      new ManagedRelayRequestFailedError({        action: "connect relay environment",        cause: new Error("request failed"),        relayError: new RelayAuthInvalidError({          code: "auth_invalid",          reason: "invalid_dpop",          traceId: "trace-1",        }),        traceId: "trace-1",      }),    );     expect(mapped).toMatchObject({      _tag: "ConnectionBlockedError",      reason: "authentication",      detail: `Relay rejected the DPoP proof. ${DPOP_UNKNOWN_HINT}`,      traceId: "trace-1",    });  });   it("uses a neutral hint when the relay identifies a non-clock DPoP error", () => {    const mapped = mapManagedRelayError(      new ManagedRelayRequestFailedError({        action: "connect relay environment",        cause: new Error("request failed"),        relayError: new RelayAuthInvalidError({          code: "auth_invalid",          reason: "invalid_dpop",          dpopFailureReason: "key_mismatch",          traceId: "trace-1",        }),      }),    );     expect(mapped.message).toBe(`Relay rejected the DPoP proof. ${DPOP_RETRY_HINT}`);  });}); describe("mapRemoteDpopEnvironmentError", () => {  it("does not present a generic environment auth error as confirmed clock skew", () => {    const mapped = mapRemoteDpopEnvironmentError(      new EnvironmentAuthInvalidError({        code: "auth_invalid",        reason: "invalid_credential",        traceId: "trace-1",      }),    );     expect(mapped.message).toBe(`The environment credential is invalid. ${DPOP_UNKNOWN_HINT}`);  });   it("uses a neutral hint for a non-clock DPoP error from a new server", () => {    const mapped = mapRemoteDpopEnvironmentError(      new EnvironmentAuthInvalidError({        code: "auth_invalid",        reason: "invalid_credential",        dpopFailureReason: "key_mismatch",        traceId: "trace-1",      }),    );     expect(mapped.message).toBe(`The environment credential is invalid. ${DPOP_RETRY_HINT}`);  });});