2026-05-02 13:02:38 +08:00

31 lines
704 B
Go

package auth
import (
"strconv"
"testing"
jwt "github.com/golang-jwt/jwt/v5"
)
func TestVerifierParsesLargeUserIDStringWithoutPrecisionLoss(t *testing.T) {
t.Parallel()
const userID int64 = 399999999999990001
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"user_id": strconv.FormatInt(userID, 10),
"app_code": "lalu",
})
signed, err := token.SignedString([]byte("secret"))
if err != nil {
t.Fatalf("sign token failed: %v", err)
}
claims, err := NewVerifier("secret").Verify("Bearer " + signed)
if err != nil {
t.Fatalf("Verify failed: %v", err)
}
if claims.UserID != userID {
t.Fatalf("user_id lost precision: got %d want %d", claims.UserID, userID)
}
}