MCPcopy Index your code
hub / github.com/coder/coder / TestBasicResumeTokenController_Mainline

Function TestBasicResumeTokenController_Mainline

tailnet/controllers_test.go:808–864  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

806}
807
808func TestBasicResumeTokenController_Mainline(t *testing.T) {
809 t.Parallel()
810 ctx := testutil.Context(t, testutil.WaitShort)
811 logger := testutil.Logger(t)
812 fr := newFakeResumeTokenClient(ctx)
813 mClock := quartz.NewMock(t)
814 trp := mClock.Trap().TimerReset("basicResumeTokenRefresher", "refresh")
815 defer trp.Close()
816
817 uut := tailnet.NewBasicResumeTokenController(logger, mClock)
818 _, ok := uut.Token()
819 require.False(t, ok)
820
821 cwCh := make(chan tailnet.CloserWaiter, 1)
822 go func() {
823 cwCh <- uut.New(fr)
824 }()
825 call := testutil.TryReceive(ctx, t, fr.calls)
826 testutil.RequireSend(ctx, t, call.resp, &proto.RefreshResumeTokenResponse{
827 Token: "test token 1",
828 RefreshIn: durationpb.New(100 * time.Second),
829 ExpiresAt: timestamppb.New(mClock.Now().Add(200 * time.Second)),
830 })
831 trp.MustWait(ctx).MustRelease(ctx) // initial refresh done
832 token, ok := uut.Token()
833 require.True(t, ok)
834 require.Equal(t, "test token 1", token)
835 cw := testutil.TryReceive(ctx, t, cwCh)
836
837 w := mClock.Advance(100 * time.Second)
838 call = testutil.TryReceive(ctx, t, fr.calls)
839 testutil.RequireSend(ctx, t, call.resp, &proto.RefreshResumeTokenResponse{
840 Token: "test token 2",
841 RefreshIn: durationpb.New(50 * time.Second),
842 ExpiresAt: timestamppb.New(mClock.Now().Add(200 * time.Second)),
843 })
844 resetCall := trp.MustWait(ctx)
845 require.Equal(t, resetCall.Duration, 50*time.Second)
846 resetCall.MustRelease(ctx)
847 w.MustWait(ctx)
848 token, ok = uut.Token()
849 require.True(t, ok)
850 require.Equal(t, "test token 2", token)
851
852 err := cw.Close(ctx)
853 require.NoError(t, err)
854 err = testutil.TryReceive(ctx, t, cw.Wait())
855 require.NoError(t, err)
856
857 token, ok = uut.Token()
858 require.True(t, ok)
859 require.Equal(t, "test token 2", token)
860
861 mClock.Advance(201 * time.Second).MustWait(ctx)
862 _, ok = uut.Token()
863 require.False(t, ok)
864}
865

Callers

nothing calls this directly

Calls 12

ContextFunction · 0.92
LoggerFunction · 0.92
TryReceiveFunction · 0.92
RequireSendFunction · 0.92
newFakeResumeTokenClientFunction · 0.85
CloseMethod · 0.65
TokenMethod · 0.65
NewMethod · 0.65
AddMethod · 0.65
WaitMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected