(t *testing.T)
| 806 | } |
| 807 | |
| 808 | func 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 |
nothing calls this directly
no test coverage detected