31 lines
704 B
Go
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)
|
|
}
|
|
}
|