@@ -56,6 +56,28 @@ var jwtTestData = []struct {
56
56
parser * jwt.Parser
57
57
signingMethod jwt.SigningMethod // The method to sign the JWT token for test purpose
58
58
}{
59
+ {
60
+ "invalid JWT" ,
61
+ "thisisnotreallyajwt" ,
62
+ defaultKeyFunc ,
63
+ nil ,
64
+ false ,
65
+ jwt .ValidationErrorMalformed ,
66
+ []error {jwt .ErrTokenMalformed },
67
+ nil ,
68
+ jwt .SigningMethodRS256 ,
69
+ },
70
+ {
71
+ "bearer in JWT" ,
72
+ "bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.FhkiHkoESI_cG3NPigFrxEk9Z60_oXrOT2vGm9Pn6RDgYNovYORQmmA0zs1AoAOf09ly2Nx2YAg6ABqAYga1AcMFkJljwxTT5fYphTuqpWdy4BELeSYJx5Ty2gmr8e7RonuUztrdD5WfPqLKMm1Ozp_T6zALpRmwTIW0QPnaBXaQD90FplAg46Iy1UlDKr-Eupy0i5SLch5Q-p2ZpaL_5fnTIUDlxC3pWhJTyx_71qDI-mAA_5lE_VdroOeflG56sSmDxopPEG3bFlSu1eowyBfxtu0_CuVd-M42RU75Zc4Gsj6uV77MBtbMrf4_7M_NUTSgoIF3fRqxrj0NzihIBg" ,
73
+ defaultKeyFunc ,
74
+ nil ,
75
+ false ,
76
+ jwt .ValidationErrorMalformed ,
77
+ []error {jwt .ErrTokenMalformed },
78
+ nil ,
79
+ jwt .SigningMethodRS256 ,
80
+ },
59
81
{
60
82
"basic" ,
61
83
"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.FhkiHkoESI_cG3NPigFrxEk9Z60_oXrOT2vGm9Pn6RDgYNovYORQmmA0zs1AoAOf09ly2Nx2YAg6ABqAYga1AcMFkJljwxTT5fYphTuqpWdy4BELeSYJx5Ty2gmr8e7RonuUztrdD5WfPqLKMm1Ozp_T6zALpRmwTIW0QPnaBXaQD90FplAg46Iy1UlDKr-Eupy0i5SLch5Q-p2ZpaL_5fnTIUDlxC3pWhJTyx_71qDI-mAA_5lE_VdroOeflG56sSmDxopPEG3bFlSu1eowyBfxtu0_CuVd-M42RU75Zc4Gsj6uV77MBtbMrf4_7M_NUTSgoIF3fRqxrj0NzihIBg" ,
@@ -371,10 +393,12 @@ func TestParser_Parse(t *testing.T) {
371
393
token , err = parser .ParseWithClaims (data .tokenString , jwt.MapClaims {}, data .keyfunc )
372
394
case * jwt.RegisteredClaims :
373
395
token , err = parser .ParseWithClaims (data .tokenString , & jwt.RegisteredClaims {}, data .keyfunc )
396
+ case nil :
397
+ token , err = parser .ParseWithClaims (data .tokenString , nil , data .keyfunc )
374
398
}
375
399
376
400
// Verify result matches expectation
377
- if ! reflect .DeepEqual (data .claims , token .Claims ) {
401
+ if data . claims != nil && ! reflect .DeepEqual (data .claims , token .Claims ) {
378
402
t .Errorf ("[%v] Claims mismatch. Expecting: %v Got: %v" , data .name , data .claims , token .Claims )
379
403
}
380
404
@@ -386,7 +410,10 @@ func TestParser_Parse(t *testing.T) {
386
410
t .Errorf ("[%v] Invalid token passed validation" , data .name )
387
411
}
388
412
389
- if (err == nil && ! token .Valid ) || (err != nil && token .Valid ) {
413
+ // Since the returned token is nil in the ErrTokenMalformed, we
414
+ // cannot make the comparison here
415
+ if ! errors .Is (err , jwt .ErrTokenMalformed ) &&
416
+ ((err == nil && ! token .Valid ) || (err != nil && token .Valid )) {
390
417
t .Errorf ("[%v] Inconsistent behavior between returned error and token.Valid" , data .name )
391
418
}
392
419
0 commit comments