File size: 906 Bytes
98c9143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { expect, test } from "bun:test"

import { getRefreshDeadlineMs, getRefreshPollDelayMs } from "../src/lib/token"

test("builds refresh deadline from refresh_in and local time", () => {
  const nowMs = 1_000_000

  expect(getRefreshDeadlineMs(1_800, nowMs)).toBe(nowMs + 1_740_000)
})

test("clamps refresh deadline to avoid a hot loop", () => {
  const nowMs = 1_000_000

  expect(getRefreshDeadlineMs(30, nowMs)).toBe(nowMs + 1_000)
})

test("caps poll delay at 15 seconds while waiting", () => {
  const nowMs = 1_000_000

  expect(getRefreshPollDelayMs(nowMs + 120_000, nowMs)).toBe(15_000)
})

test("uses remaining delay when refresh is close", () => {
  const nowMs = 1_000_000

  expect(getRefreshPollDelayMs(nowMs + 8_000, nowMs)).toBe(8_000)
})

test("returns zero when refresh is already due", () => {
  const nowMs = 1_000_000

  expect(getRefreshPollDelayMs(nowMs - 1, nowMs)).toBe(0)
})