github.com/annwntech/go-micro/v2@v2.9.5/auth/token/jwt/jwt_test.go (about) 1 package jwt 2 3 import ( 4 "io/ioutil" 5 "testing" 6 "time" 7 8 "github.com/annwntech/go-micro/v2/auth" 9 "github.com/annwntech/go-micro/v2/auth/token" 10 ) 11 12 func TestGenerate(t *testing.T) { 13 privKey, err := ioutil.ReadFile("test/sample_key") 14 if err != nil { 15 t.Fatalf("Unable to read private key: %v", err) 16 } 17 18 j := NewTokenProvider( 19 token.WithPrivateKey(string(privKey)), 20 ) 21 22 _, err = j.Generate(&auth.Account{ID: "test"}) 23 if err != nil { 24 t.Fatalf("Generate returned %v error, expected nil", err) 25 } 26 } 27 28 func TestInspect(t *testing.T) { 29 pubKey, err := ioutil.ReadFile("test/sample_key.pub") 30 if err != nil { 31 t.Fatalf("Unable to read public key: %v", err) 32 } 33 privKey, err := ioutil.ReadFile("test/sample_key") 34 if err != nil { 35 t.Fatalf("Unable to read private key: %v", err) 36 } 37 38 j := NewTokenProvider( 39 token.WithPublicKey(string(pubKey)), 40 token.WithPrivateKey(string(privKey)), 41 ) 42 43 t.Run("Valid token", func(t *testing.T) { 44 md := map[string]string{"foo": "bar"} 45 scopes := []string{"admin"} 46 subject := "test" 47 48 acc := &auth.Account{ID: subject, Scopes: scopes, Metadata: md} 49 tok, err := j.Generate(acc) 50 if err != nil { 51 t.Fatalf("Generate returned %v error, expected nil", err) 52 } 53 54 tok2, err := j.Inspect(tok.Token) 55 if err != nil { 56 t.Fatalf("Inspect returned %v error, expected nil", err) 57 } 58 if acc.ID != subject { 59 t.Errorf("Inspect returned %v as the token subject, expected %v", acc.ID, subject) 60 } 61 if len(tok2.Scopes) != len(scopes) { 62 t.Errorf("Inspect returned %v scopes, expected %v", len(tok2.Scopes), len(scopes)) 63 } 64 if len(tok2.Metadata) != len(md) { 65 t.Errorf("Inspect returned %v as the token metadata, expected %v", tok2.Metadata, md) 66 } 67 }) 68 69 t.Run("Expired token", func(t *testing.T) { 70 tok, err := j.Generate(&auth.Account{}, token.WithExpiry(-10*time.Second)) 71 if err != nil { 72 t.Fatalf("Generate returned %v error, expected nil", err) 73 } 74 75 if _, err = j.Inspect(tok.Token); err != token.ErrInvalidToken { 76 t.Fatalf("Inspect returned %v error, expected %v", err, token.ErrInvalidToken) 77 } 78 }) 79 80 t.Run("Invalid token", func(t *testing.T) { 81 _, err := j.Inspect("Invalid token") 82 if err != token.ErrInvalidToken { 83 t.Fatalf("Inspect returned %v error, expected %v", err, token.ErrInvalidToken) 84 } 85 }) 86 87 }