github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/crypto/claim/claim_test.go (about)

     1  package claim
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  	"time"
     7  
     8  	"reflect"
     9  
    10  	"github.com/dgrijalva/jwt-go"
    11  	"gotest.tools/assert"
    12  )
    13  
    14  func Test(t *testing.T) {
    15  
    16  	// test signer and verifier
    17  	{
    18  		// openssl genrsa -out test.rsa 2048
    19  		signBytes, err := ioutil.ReadFile("data/test.rsa")
    20  		assert.Assert(t, err == nil)
    21  		// openssl rsa -in test.rsa -pubout > test.rsa.pub
    22  		verifyBytes, err := ioutil.ReadFile("data/test.rsa.pub")
    23  		assert.Assert(t, err == nil)
    24  
    25  		signKey, err := jwt.ParseRSAPrivateKeyFromPEM(signBytes)
    26  		assert.Assert(t, err == nil)
    27  		verifyKey, err := jwt.ParseRSAPublicKeyFromPEM(verifyBytes)
    28  		assert.Assert(t, err == nil)
    29  
    30  		s, err := NewSigner(time.Hour, signKey)
    31  		assert.Assert(t, err == nil)
    32  
    33  		v, err := NewVerifier(verifyKey)
    34  		assert.Assert(t, err == nil)
    35  
    36  		values := map[string]interface{}{
    37  			"c1": "v1",
    38  			"c2": "v2",
    39  		}
    40  
    41  		tokenString, err := s.Sign(values)
    42  		assert.Assert(t, err == nil, err)
    43  
    44  		ok, valuesVerified := v.Verify(tokenString)
    45  		assert.Assert(t, ok && reflect.DeepEqual(valuesVerified, values))
    46  	}
    47  
    48  	// test jwt
    49  	{
    50  		j, err := NewJWT(time.Hour*24, []byte("sec"))
    51  		assert.Assert(t, err == nil)
    52  
    53  		values := map[string]interface{}{
    54  			"c1": "v1",
    55  			"c2": "v2",
    56  		}
    57  		tokenString, err := j.Sign(values)
    58  		assert.Assert(t, err == nil)
    59  
    60  		ok, valuesVerified := j.Verify(tokenString)
    61  		assert.Assert(t, ok && reflect.DeepEqual(valuesVerified, values))
    62  	}
    63  
    64  }