From 5de5e0ffa3dc0da9d6b1e249c01c9a9666120068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Fri, 6 Dec 2024 17:20:28 +0900 Subject: [PATCH] fix: refresh token validate logic --- token.go | 2 +- token_test.go | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/token.go b/token.go index e32c5d8..13d9bf1 100644 --- a/token.go +++ b/token.go @@ -171,7 +171,7 @@ func (t *Tokenizer) Refresh( if crc != h.Sum64() { return "", ErrInvalidToken } - if time.Now().Add(validAfter).After( // still valid after 30 mins + if time.Now().Add(-validAfter).After( // still invalid even before this time time.UnixMilli(int64(binary.LittleEndian.Uint64(data[:8]))), ) { return "", ErrExpiredToken diff --git a/token_test.go b/token_test.go index bb292ac..f428de1 100644 --- a/token_test.go +++ b/token_test.go @@ -3,6 +3,7 @@ package fumitok import ( "crypto/rand" "encoding/hex" + "fmt" "testing" "time" ) @@ -28,15 +29,26 @@ func TestTokenizer(t *testing.T) { t.Fatal(err) } if vid != id || addt != 0x34 { - t.Fatal("id", id, "vid", vid, "addt", addt) + t.Fatal("validate id", id, "vid", vid, "addt", addt) } - token, err = tk.Generate(id, time.Now().Add(-time.Minute), 0, 0) + token2, err := tk.Generate(id, time.Now().Add(-time.Minute), 0, 0) if err != nil { t.Fatal(err) } - t.Log(token) - _, _, err = tk.Validate(token, 0) + t.Log(token2) + _, _, err = tk.Validate(token2, 0) if err != ErrExpiredToken { t.Fatal("unexpected err", err) } + token, err = tk.Refresh(token, time.Now().Add(time.Minute), time.Minute*2, 0x00ff) + if err != nil { + t.Fatal(err) + } + vid, addt, err = tk.Validate(token, 0x00ff) + if err != nil { + t.Fatal(err) + } + if vid != id || addt != 0x34 { + t.Fatal("refresh id", id, "vid", vid, "addt", fmt.Sprintf("%02x", addt)) + } }