Skip to content

Commit

Permalink
Add error handling to examples (#312)
Browse files Browse the repository at this point in the history
  • Loading branch information
Craig Pastro authored Oct 9, 2023
1 parent 908d356 commit c776b83
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 28 deletions.
15 changes: 5 additions & 10 deletions cmd/jwt/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,20 +150,15 @@ func verifyToken() error {
}
})

// Print some debug data
if *flagDebug && token != nil {
fmt.Fprintf(os.Stderr, "Header:\n%v\n", token.Header)
fmt.Fprintf(os.Stderr, "Claims:\n%v\n", token.Claims)
}

// Print an error if we can't parse for some reason
if err != nil {
return fmt.Errorf("couldn't parse token: %w", err)
}

// Is token invalid?
if !token.Valid {
return fmt.Errorf("token is invalid")
// Print some debug data
if *flagDebug {
fmt.Fprintf(os.Stderr, "Header:\n%v\n", token.Header)
fmt.Fprintf(os.Stderr, "Claims:\n%v\n", token.Claims)
}

// Print the token details
Expand Down Expand Up @@ -279,7 +274,7 @@ func showToken() error {
}

token, err := jwt.Parse(string(tokData), nil)
if token == nil {
if err != nil {
return fmt.Errorf("malformed token: %w", err)
}

Expand Down
32 changes: 18 additions & 14 deletions example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package jwt_test
import (
"errors"
"fmt"
"log"
"time"

"github.com/golang-jwt/jwt/v5"
Expand All @@ -24,7 +25,7 @@ func ExampleNewWithClaims_registeredClaims() {

token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
ss, err := token.SignedString(mySigningKey)
fmt.Printf("%v %v", ss, err)
fmt.Println(ss, err)
// Output: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ0ZXN0IiwiZXhwIjoxNTE2MjM5MDIyfQ.0XN_1Tpp9FszFOonIBpwha0c_SfnNI22DhTnjMshPg8 <nil>
}

Expand Down Expand Up @@ -67,7 +68,7 @@ func ExampleNewWithClaims_customClaimsType() {

token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
ss, err := token.SignedString(mySigningKey)
fmt.Printf("%v %v", ss, err)
fmt.Println(ss, err)

// Output: foo: bar
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIiLCJpc3MiOiJ0ZXN0IiwiZXhwIjoxNTE2MjM5MDIyfQ.xVuY2FZ_MRXMIEgVQ7J-TFtaucVFRXUzHm9LmV41goM <nil>
Expand All @@ -86,11 +87,12 @@ func ExampleParseWithClaims_customClaimsType() {
token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, func(token *jwt.Token) (interface{}, error) {
return []byte("AllYourBase"), nil
})

if claims, ok := token.Claims.(*MyCustomClaims); ok && token.Valid {
fmt.Printf("%v %v", claims.Foo, claims.RegisteredClaims.Issuer)
if err != nil {
log.Fatal(err)
} else if claims, ok := token.Claims.(*MyCustomClaims); ok {
fmt.Println(claims.Foo, claims.RegisteredClaims.Issuer)
} else {
fmt.Println(err)
log.Fatal("unknown claims type, cannot proceed")
}

// Output: bar test
Expand All @@ -109,11 +111,12 @@ func ExampleParseWithClaims_validationOptions() {
token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, func(token *jwt.Token) (interface{}, error) {
return []byte("AllYourBase"), nil
}, jwt.WithLeeway(5*time.Second))

if claims, ok := token.Claims.(*MyCustomClaims); ok && token.Valid {
fmt.Printf("%v %v", claims.Foo, claims.RegisteredClaims.Issuer)
if err != nil {
log.Fatal(err)
} else if claims, ok := token.Claims.(*MyCustomClaims); ok {
fmt.Println(claims.Foo, claims.RegisteredClaims.Issuer)
} else {
fmt.Println(err)
log.Fatal("unknown claims type, cannot proceed")
}

// Output: bar test
Expand Down Expand Up @@ -147,11 +150,12 @@ func ExampleParseWithClaims_customValidation() {
token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, func(token *jwt.Token) (interface{}, error) {
return []byte("AllYourBase"), nil
}, jwt.WithLeeway(5*time.Second))

if claims, ok := token.Claims.(*MyCustomClaims); ok && token.Valid {
fmt.Printf("%v %v", claims.Foo, claims.RegisteredClaims.Issuer)
if err != nil {
log.Fatal(err)
} else if claims, ok := token.Claims.(*MyCustomClaims); ok {
fmt.Println(claims.Foo, claims.RegisteredClaims.Issuer)
} else {
fmt.Println(err)
log.Fatal("unknown claims type, cannot proceed")
}

// Output: bar test
Expand Down
6 changes: 5 additions & 1 deletion hmac_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package jwt_test

import (
"fmt"
"log"
"os"
"time"

Expand Down Expand Up @@ -56,8 +57,11 @@ func ExampleParse_hmac() {
// hmacSampleSecret is a []byte containing your secret, e.g. []byte("my_secret_key")
return hmacSampleSecret, nil
})
if err != nil {
log.Fatal(err)
}

if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
if claims, ok := token.Claims.(jwt.MapClaims); ok {
fmt.Println(claims["foo"], claims["nbf"])
} else {
fmt.Println(err)
Expand Down
4 changes: 1 addition & 3 deletions http_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,7 @@ func Example_getTokenViaHTTP() {
"user": {"test"},
"pass": {"known"},
})
if err != nil {
fatal(err)
}
fatal(err)

if res.StatusCode != 200 {
fmt.Println("Unexpected status code", res.StatusCode)
Expand Down

0 comments on commit c776b83

Please sign in to comment.