Skip to content

Commit a85a42c

Browse files
authored
Merge 3ec564d into e9547a1
2 parents e9547a1 + 3ec564d commit a85a42c

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

parser_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,25 @@ import (
1616

1717
var errKeyFuncError error = fmt.Errorf("error loading key")
1818

19+
// customClaimsWithDifferentTypes embeds the standard jwt.RegisteredClaims
20+
// struct, along with other valid JSON Data Types
21+
type customClaimsWithDifferentTypes struct {
22+
StringClaim string `json:"stringClaim"`
23+
IntClaim int `json:"intClaim"`
24+
BoolClaim bool `json:"boolClaim"`
25+
UintClaim uint `json:"uintClaim"`
26+
FloatClaim float64 `json:"floatClaim"`
27+
SliceClaim []int `json:"sliceClaim"`
28+
ObjectClaim CustomObject `json:"objectClaim"`
29+
NilPointerClaim *int `json:"nilPointerClaim"`
30+
31+
jwt.RegisteredClaims
32+
}
33+
34+
type CustomObject struct {
35+
Property string `json:"property"`
36+
}
37+
1938
var (
2039
jwtTestDefaultKey *rsa.PublicKey
2140
jwtTestRSAPrivateKey *rsa.PrivateKey
@@ -113,6 +132,47 @@ var jwtTestData = []struct {
113132
nil,
114133
jwt.SigningMethodRS256,
115134
},
135+
/*
136+
custom claims with JSON Data Types
137+
Payload:
138+
{
139+
"stringClaim": "string",
140+
"intClaim": -1,
141+
"boolClaim": true,
142+
"uintClaim": 1,
143+
"floatClaim": 5.01,
144+
"sliceClaim": [
145+
-1,
146+
0,
147+
1
148+
],
149+
"objectClaim": {
150+
"property": "something"
151+
},
152+
"nilPointerClaim": null
153+
}
154+
*/
155+
{
156+
"custom claims with JSON Data Types",
157+
"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdHJpbmdDbGFpbSI6InN0cmluZyIsImludENsYWltIjotMSwiYm9vbENsYWltIjp0cnVlLCJ1aW50Q2xhaW0iOjEsImZsb2F0Q2xhaW0iOjUuMDEsInNsaWNlQ2xhaW0iOlstMSwwLDFdLCJvYmplY3RDbGFpbSI6eyJwcm9wZXJ0eSI6InNvbWV0aGluZyJ9LCJuaWxQb2ludGVyQ2xhaW0iOm51bGx9.08Q-I2ISws_DaZnxjZ39j5EtmhGSo6dwigxMlV42kKeSVIiMDAGdukYDMJvyurrvLV19gMWkAHdLp5j23qHhP_KUcj2dKlooIFkkRvp2XuTdOtGsyCy5X7jHMYhyR4pMW7y5jor1njrxuDPBvI_oxjs-EZEYqjk8Su4_LAS5AmI2wnTR5DQAAF70WqZAvfnEwavtKSuSCYZS8ZcblBvhfufnjoXtOHbjFnIN1hEzbiLFOe-Ka_tGegYy-7RgX65ohlAFV3By48rXAcr6PLk5eG2Hz9ZSJ6GR6bozqwwnbbm7loiJYtIw7nwQSeo2sRHCw9RFG61Rq33XNlUD_kYC8Q",
158+
defaultKeyFunc,
159+
&customClaimsWithDifferentTypes{
160+
StringClaim: "string",
161+
IntClaim: -1,
162+
BoolClaim: true,
163+
UintClaim: 1,
164+
FloatClaim: 5.01,
165+
SliceClaim: []int{-1, 0, 1},
166+
ObjectClaim: CustomObject{
167+
Property: "something",
168+
},
169+
NilPointerClaim: nil,
170+
},
171+
true,
172+
nil,
173+
nil,
174+
jwt.SigningMethodRS256,
175+
},
116176
{
117177
"multiple keys, last matches",
118178
"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.FhkiHkoESI_cG3NPigFrxEk9Z60_oXrOT2vGm9Pn6RDgYNovYORQmmA0zs1AoAOf09ly2Nx2YAg6ABqAYga1AcMFkJljwxTT5fYphTuqpWdy4BELeSYJx5Ty2gmr8e7RonuUztrdD5WfPqLKMm1Ozp_T6zALpRmwTIW0QPnaBXaQD90FplAg46Iy1UlDKr-Eupy0i5SLch5Q-p2ZpaL_5fnTIUDlxC3pWhJTyx_71qDI-mAA_5lE_VdroOeflG56sSmDxopPEG3bFlSu1eowyBfxtu0_CuVd-M42RU75Zc4Gsj6uV77MBtbMrf4_7M_NUTSgoIF3fRqxrj0NzihIBg",
@@ -471,6 +531,8 @@ func TestParser_Parse(t *testing.T) {
471531
token, err = parser.ParseWithClaims(data.tokenString, jwt.MapClaims{}, data.keyfunc)
472532
case *jwt.RegisteredClaims:
473533
token, err = parser.ParseWithClaims(data.tokenString, &jwt.RegisteredClaims{}, data.keyfunc)
534+
case *customClaimsWithDifferentTypes:
535+
token, err = parser.ParseWithClaims(data.tokenString, &customClaimsWithDifferentTypes{}, data.keyfunc)
474536
case nil:
475537
token, err = parser.ParseWithClaims(data.tokenString, nil, data.keyfunc)
476538
}
@@ -550,6 +612,8 @@ func TestParser_ParseUnverified(t *testing.T) {
550612
token, _, err = parser.ParseUnverified(data.tokenString, jwt.MapClaims{})
551613
case *jwt.RegisteredClaims:
552614
token, _, err = parser.ParseUnverified(data.tokenString, &jwt.RegisteredClaims{})
615+
case *customClaimsWithDifferentTypes:
616+
token, _, err = parser.ParseUnverified(data.tokenString, &customClaimsWithDifferentTypes{})
553617
}
554618

555619
if err != nil {

0 commit comments

Comments
 (0)