github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/jwt/claims_test.go (about) 1 package jwt 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "math/rand" 7 "testing" 8 9 "github.com/dgrijalva/jwt-go" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestJanusClaims_UnmarshalJSON(t *testing.T) { 15 claims := NewJanusClaims(0) 16 17 claimBytes := []byte(`{"exp":1,"iat":2,"iss":"test","username":"janus"}`) 18 dec := json.NewDecoder(bytes.NewBuffer(claimBytes)) 19 err := dec.Decode(&claims) 20 require.NoError(t, err) 21 22 assert.Equal(t, float64(1), claims.MapClaims["exp"]) 23 assert.Equal(t, float64(2), claims.MapClaims["iat"]) 24 assert.Equal(t, "test", claims.MapClaims["iss"]) 25 assert.Equal(t, "janus", claims.MapClaims["username"]) 26 } 27 28 func TestJanusClaims_VerifyExpiresAt(t *testing.T) { 29 leeway := 1 + rand.Int63n(120) 30 claims := NewJanusClaims(leeway) 31 now := jwt.TimeFunc().Unix() 32 33 claims.MapClaims["exp"] = float64(now - 1) 34 assert.True(t, claims.VerifyExpiresAt(now, true)) 35 36 claims.MapClaims["exp"] = float64(now - leeway) 37 assert.True(t, claims.VerifyExpiresAt(now, true)) 38 39 claims.MapClaims["exp"] = float64(now - leeway - 1) 40 assert.False(t, claims.VerifyExpiresAt(now, true)) 41 } 42 43 func TestJanusClaims_VerifyIssuedAt(t *testing.T) { 44 leeway := 1 + rand.Int63n(120) 45 claims := NewJanusClaims(leeway) 46 now := jwt.TimeFunc().Unix() 47 48 claims.MapClaims["iat"] = float64(now + 1) 49 assert.True(t, claims.VerifyIssuedAt(now, true)) 50 51 claims.MapClaims["iat"] = float64(now + leeway) 52 assert.True(t, claims.VerifyIssuedAt(now, true)) 53 54 claims.MapClaims["iat"] = float64(now + leeway + 1) 55 assert.False(t, claims.VerifyIssuedAt(now, true)) 56 } 57 58 func TestJanusClaims_VerifyNotBefore(t *testing.T) { 59 leeway := 1 + rand.Int63n(120) 60 claims := NewJanusClaims(leeway) 61 now := jwt.TimeFunc().Unix() 62 63 claims.MapClaims["nbf"] = float64(now + 1) 64 assert.True(t, claims.VerifyNotBefore(now, true)) 65 66 claims.MapClaims["nbf"] = float64(now + leeway) 67 assert.True(t, claims.VerifyNotBefore(now, true)) 68 69 claims.MapClaims["nbf"] = float64(now + leeway + 1) 70 assert.False(t, claims.VerifyNotBefore(now, true)) 71 } 72 73 func TestJanusClaims_Valid(t *testing.T) { 74 leeway := 1 + rand.Int63n(120) 75 claims := NewJanusClaims(leeway) 76 now := jwt.TimeFunc().Unix() 77 78 claims.MapClaims["iat"] = float64(now + 1) 79 assert.NoError(t, claims.Valid()) 80 }