MCPcopy
hub / github.com/golang-jwt/jwt / TestParser_Parse

Function TestParser_Parse

parser_test.go:512–586  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

510}
511
512func TestParser_Parse(t *testing.T) {
513 // Iterate over test data set and run tests
514 for _, data := range jwtTestData {
515 t.Run(data.name, func(t *testing.T) {
516 // If the token string is blank, use helper function to generate string
517 if data.tokenString == "" {
518 data.tokenString = signToken(data.claims, data.signingMethod)
519 }
520
521 // Parse the token
522 var token *jwt.Token
523 var err error
524 var parser = data.parser
525 if parser == nil {
526 parser = jwt.NewParser()
527 }
528 // Figure out correct claims type
529 switch data.claims.(type) {
530 case jwt.MapClaims:
531 token, err = parser.ParseWithClaims(data.tokenString, jwt.MapClaims{}, data.keyfunc)
532 case *jwt.RegisteredClaims:
533 token, err = parser.ParseWithClaims(data.tokenString, &jwt.RegisteredClaims{}, data.keyfunc)
534 case *customClaimsWithDifferentTypes:
535 token, err = parser.ParseWithClaims(data.tokenString, &customClaimsWithDifferentTypes{}, data.keyfunc)
536 case nil:
537 token, err = parser.ParseWithClaims(data.tokenString, nil, data.keyfunc)
538 }
539
540 // Verify result matches expectation
541 if data.claims != nil && !reflect.DeepEqual(data.claims, token.Claims) {
542 t.Errorf("[%v] Claims mismatch. Expecting: %v Got: %v", data.name, data.claims, token.Claims)
543 }
544
545 if data.valid && err != nil {
546 t.Errorf("[%v] Error while verifying token: %T:%v", data.name, err, err)
547 }
548
549 if !data.valid && err == nil {
550 t.Errorf("[%v] Invalid token passed validation", data.name)
551 }
552
553 // Since the returned token is nil in the ErrTokenMalformed, we
554 // cannot make the comparison here
555 if !errors.Is(err, jwt.ErrTokenMalformed) &&
556 ((err == nil && !token.Valid) || (err != nil && token.Valid)) {
557 t.Errorf("[%v] Inconsistent behavior between returned error and token.Valid", data.name)
558 }
559
560 if data.err != nil {
561 if err == nil {
562 t.Errorf("[%v] Expecting error(s). Didn't get one.", data.name)
563 } else {
564 var all = false
565 for _, e := range data.err {
566 all = errors.Is(err, e)
567 }
568
569 if !all {

Callers

nothing calls this directly

Calls 2

ParseWithClaimsMethod · 0.80
signTokenFunction · 0.70

Tested by

no test coverage detected