1import { describe, expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";
3
4import { retryManagedTunnelRegistration } from "./managedTunnelStartup.ts";
5
6describe("retryManagedTunnelRegistration", () => {
7 it.effect("does not fall back or retry when registration is permanently rejected", () =>
8 Effect.gen(function* () {
9 let attempts = 0;
10 let fallbacks = 0;
11 const error = yield* Effect.flip(
12 retryManagedTunnelRegistration(
13 Effect.suspend(() => {
14 attempts += 1;
15 return Effect.fail("not authorized");
16 }),
17 () => false,
18 Effect.sync(() => {
19 fallbacks += 1;
20 }),
21 ),
22 );
23 expect(error).toBe("not authorized");
24 expect(attempts).toBe(1);
25 expect(fallbacks).toBe(0);
26 }),
27 );
28});