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