import { assertEquals } from "jsr:@std/assert@1"; import { retryInvalidToken } from "./auth.ts"; Deno.test("retries once after an invalid refresh token", async () => { let attempts = 0; let relogins = 0; const result = await retryInvalidToken( () => Promise.resolve({ status: { success: false }, error: attempts++ === 0 ? "invalid_refresh_token" : "still failed", }), () => { relogins++; return Promise.resolve(); }, ); assertEquals({ attempts, relogins, error: result.error }, { attempts: 2, relogins: 1, error: "still failed", }); }); Deno.test("does not retry an unrelated failure", async () => { let attempts = 0; let relogins = 0; await retryInvalidToken( () => { attempts++; return Promise.resolve({ status: { success: false }, error: "rate limited", }); }, () => { relogins++; return Promise.resolve(); }, ); assertEquals({ attempts, relogins }, { attempts: 1, relogins: 0 }); });