91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package jwt
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/micro/go-micro/v2/auth/token"
 | |
| )
 | |
| 
 | |
| func TestGenerate(t *testing.T) {
 | |
| 	privKey, err := ioutil.ReadFile("test/sample_key")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Unable to read private key: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	j := NewTokenProvider(
 | |
| 		token.WithPrivateKey(string(privKey)),
 | |
| 	)
 | |
| 
 | |
| 	_, err = j.Generate("test")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Generate returned %v error, expected nil", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestInspect(t *testing.T) {
 | |
| 	pubKey, err := ioutil.ReadFile("test/sample_key.pub")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Unable to read public key: %v", err)
 | |
| 	}
 | |
| 	privKey, err := ioutil.ReadFile("test/sample_key")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Unable to read private key: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	j := NewTokenProvider(
 | |
| 		token.WithPublicKey(string(pubKey)),
 | |
| 		token.WithPrivateKey(string(privKey)),
 | |
| 	)
 | |
| 
 | |
| 	t.Run("Valid token", func(t *testing.T) {
 | |
| 		md := map[string]string{"foo": "bar"}
 | |
| 		roles := []string{"admin"}
 | |
| 		subject := "test"
 | |
| 
 | |
| 		opts := []token.GenerateOption{
 | |
| 			token.WithMetadata(md),
 | |
| 			token.WithRoles(roles...),
 | |
| 		}
 | |
| 
 | |
| 		tok, err := j.Generate(subject, opts...)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Generate returned %v error, expected nil", err)
 | |
| 		}
 | |
| 
 | |
| 		tok2, err := j.Inspect(tok.Token)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Inspect returned %v error, expected nil", err)
 | |
| 		}
 | |
| 		if tok2.Subject != subject {
 | |
| 			t.Errorf("Inspect returned %v as the token subject, expected %v", tok2.Subject, subject)
 | |
| 		}
 | |
| 		if len(tok2.Roles) != len(roles) {
 | |
| 			t.Errorf("Inspect returned %v roles, expected %v", len(tok2.Roles), len(roles))
 | |
| 		}
 | |
| 		if len(tok2.Metadata) != len(md) {
 | |
| 			t.Errorf("Inspect returned %v as the token metadata, expected %v", tok2.Metadata, md)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Expired token", func(t *testing.T) {
 | |
| 		tok, err := j.Generate("foo", token.WithExpiry(-10*time.Second))
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Generate returned %v error, expected nil", err)
 | |
| 		}
 | |
| 
 | |
| 		if _, err = j.Inspect(tok.Token); err != token.ErrInvalidToken {
 | |
| 			t.Fatalf("Inspect returned %v error, expected %v", err, token.ErrInvalidToken)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| 	t.Run("Invalid token", func(t *testing.T) {
 | |
| 		_, err := j.Inspect("Invalid token")
 | |
| 		if err != token.ErrInvalidToken {
 | |
| 			t.Fatalf("Inspect returned %v error, expected %v", err, token.ErrInvalidToken)
 | |
| 		}
 | |
| 	})
 | |
| 
 | |
| }
 |