import * as NodeServices from "@effect/platform-node/NodeServices"; import { describe, expect, it } from "@effect/vitest"; import * as Effect from "effect/Effect"; import * as Option from "effect/Option"; import * as PlatformError from "effect/PlatformError"; import { HttpClient } from "effect/unstable/http"; import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts"; import * as ServerSecretStore from "../auth/ServerSecretStore.ts"; import { ServerEnvironment } from "../environment/Services/ServerEnvironment.ts"; import * as CliTokenManager from "./CliTokenManager.ts"; import { consumeCloudReplayGuards, reconcileDesiredCloudLink } from "./http.ts"; import { CloudManagedEndpointRuntime, type CloudManagedEndpointRuntimeShape, } from "./ManagedEndpointRuntime.ts"; const storeFailure = (tag: "AlreadyExists" | "PermissionDenied") => new ServerSecretStore.SecretStoreError({ message: "Failed to persist cloud replay guard.", cause: PlatformError.systemError({ _tag: tag, module: "FileSystem", method: "open", pathOrDescriptor: "cloud-replay-guard.bin", }), }); const unusedSecretStoreOperation = () => Effect.die("unused secret-store operation"); function makeSecretStore( create: ServerSecretStore.ServerSecretStoreShape["create"], ): ServerSecretStore.ServerSecretStoreShape { return { get: unusedSecretStoreOperation, set: unusedSecretStoreOperation, create, getOrCreateRandom: unusedSecretStoreOperation, remove: unusedSecretStoreOperation, }; } describe("consumeCloudReplayGuards", () => { it.effect("reports already-created guards as replay conflicts", () => Effect.gen(function* () { const consumed = yield* consumeCloudReplayGuards({ secrets: makeSecretStore(() => Effect.fail(storeFailure("AlreadyExists"))), names: ["cloud-jti", "cloud-nonce"], value: new Uint8Array(), }); expect(consumed).toBe(false); }), ); it.effect("preserves replay-store availability failures", () => Effect.gen(function* () { const failure = storeFailure("PermissionDenied"); const error = yield* Effect.flip( consumeCloudReplayGuards({ secrets: makeSecretStore(() => Effect.fail(failure)), names: ["cloud-jti", "cloud-nonce"], value: new Uint8Array(), }), ); expect(error).toBe(failure); }), ); }); describe("reconcileDesiredCloudLink", () => { it.effect("requires stored CLI authorization without exposing an HTTP endpoint", () => Effect.gen(function* () { const error = yield* Effect.flip(reconcileDesiredCloudLink("http://127.0.0.1:3774")); expect(error).toMatchObject({ _tag: "EnvironmentHttpUnauthorizedError", message: "Run `t3 cloud link` to authorize this environment.", }); }).pipe( Effect.provideService( ServerSecretStore.ServerSecretStore, makeSecretStore(unusedSecretStoreOperation), ), Effect.provideService( ServerEnvironment, ServerEnvironment.of({ getEnvironmentId: unusedSecretStoreOperation(), getDescriptor: unusedSecretStoreOperation(), }), ), Effect.provideService( CloudManagedEndpointRuntime, CloudManagedEndpointRuntime.of({ applyConfig: unusedSecretStoreOperation, } satisfies CloudManagedEndpointRuntimeShape), ), Effect.provideService( EnvironmentAuth.EnvironmentAuth, EnvironmentAuth.EnvironmentAuth.of({} as EnvironmentAuth.EnvironmentAuthShape), ), Effect.provideService( CliTokenManager.CloudCliTokenManager, CliTokenManager.CloudCliTokenManager.of({ get: unusedSecretStoreOperation(), getExisting: Effect.succeed(Option.none()), hasCredential: unusedSecretStoreOperation(), clear: unusedSecretStoreOperation(), }), ), Effect.provideService( HttpClient.HttpClient, HttpClient.make(() => unusedSecretStoreOperation()), ), Effect.provide(NodeServices.layer), ), ); });