dcacac18e8
Co-authored-by: Danny Kim <temeddix@gmail.com> Co-committed-by: Danny Kim <temeddix@gmail.com>
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
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 });
|
|
});
|