|
@@ -0,0 +1,88 @@
|
|
|
+package jwt
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/dgrijalva/jwt-go"
|
|
|
+)
|
|
|
+
|
|
|
+const privateKey = `-----BEGIN RSA PRIVATE KEY-----
|
|
|
+MIIEpQIBAAKCAQEA1aC2ROAGNjpmpevOlg/NTVtgd8fdve3cM1J69uS6UHoZJWR2
|
|
|
+pmIzOr5EQkQjr0ldnS4zP9feHPTeGebcvekqAzrGwEgKTMe5Scu64f+y77l1p5RV
|
|
|
+FI2WLZhCw1zaYI3GiJMzYx5YeMRT2aKizIe2ORIooXdypx+xY8E4vTERsAr+w1Zb
|
|
|
+U2P+HSc65u7FYxjNx5y4m4lsE4oRHcaNK9DxtdccRQmugVRHINdZFtcNmtArZK2p
|
|
|
+sexpdmkRDL3tJtQD3O1GcLR7JEMQR1UGrjvvd/ZQmQIVgz+D9R3Nd/B8mSHFwV3z
|
|
|
+Mt3I1y7Pd1ZMYve06iTzqxBBDs4ot60BQj85awIDAQABAoIBAQDCZis3Zf2BH4gF
|
|
|
+eR5XZC3ZNUwF9DUO/wMhGO+Y+O+rCFEVu+RU6Ivh6v7GpqcqfcLYpBAzCseu5g2u
|
|
|
+2G0LzMBUjAoNNAFbeWxdgS2hN0Sn7cbpJox91ZJSD3rBuR9oOdvusLVUf2rXCyGa
|
|
|
+rOsk4GKscJ/Uv5PwDWEpe82cLKkB3nW9iXDUNv6+QQyLf9Rfikxzzcm9PW3qOCBE
|
|
|
+FFUGgFiC4vXL7mjodwQ4uxS8Krpn1poyBDkHGOv5yMbsOouaR6ShsJHPXSeeTfu5
|
|
|
+y8THhRJDzN2L39ecKdLwv1fKcQgLDqT69TwOJ//78k777yy3tDhU+0S/nDQQdEXF
|
|
|
+Hx5s7DPxAoGBAPFqJyLpRj93HiyS5LCQv93thQ7tc+fnMCBembVh5ErTTfQPREKT
|
|
|
+B6+42UWWch8xjcL1JQKcyBbgGeA5kLzMKmi+JEtHXpoqznkkJLBLXmuNvmwbXB3x
|
|
|
+uuAj904fOdntDoMsoExIt+GA0sGyx825TxMNoSiC7lMnQUtS/2JTPlE9AoGBAOKI
|
|
|
+yuJmzZb/QMC7x83/PqhqJCxd9myxxc1KEBYqLM3hwb0dhG22ep84QxyLf0ScrhUf
|
|
|
+d5KGLIZ/lwCW3kZsSE6GzlK9GTzhbWeNEBSk8hhDITI+P+9ca+j1jNRzrQA3Ilx1
|
|
|
+U7CiuDPHkgh4QFU8Vxlg35zad6UH9Sojazd/8Y/HAoGBAJ67UF5JCXJjTQi70Pgz
|
|
|
+RKSULr/A60vYm7E84k37vpJgW0oU26n2aMBmhx2VLRZLi81bSGluUrWPxhPDZeJt
|
|
|
+T5ktJEoG9DHj4XyPgjwUYlHPkhwc5TWfImOL4miQaYZbswYWypM94QG5pVnMxkkD
|
|
|
+BfYeKQ+s/yzXi7wOJ3MsDrZ1AoGBAN/b4/nlM0cDCP8s0Z7cnBObiBGb7ReueVSL
|
|
|
+2ue8V7hAXs6+q44rpHNRCujbZTHtTw4qoWPXWYqz7Qm1DQQ0nyOSjbMvkRAbiJyq
|
|
|
+xnhQI7kcJWLcJxwnja+Rb9DGWvB6i2covkIwGq14ivP5uUFBtqSqmW8MaO1Ztskk
|
|
|
+ZSBcO98jAoGAbHMD0WmQqnKpVHbchOfldluzzWkWZMBQlX23Fr7iHfzXiikjgCqK
|
|
|
+6HtRq1m6AGIZsbM+Dd53knurbTo49GfGjneN0ZtCFbiBOwFx0OX69UZcxmd+3Cqz
|
|
|
+14QDSlFpfXTbugpZFYC9KTakY7nDgsj1Ei2WjTE0gVSlUtuiw1XykCM=
|
|
|
+-----END RSA PRIVATE KEY-----`
|
|
|
+
|
|
|
+const publicKey = `-----BEGIN PUBLIC KEY-----
|
|
|
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAokQEiPqzrL22jrKqWN3a
|
|
|
+9XXYtXLhJOolmYoPRfBpWFr5ml/vcEsMMPmVc9EUhDSXyo2tTgiCBhqyLZ+C/9ob
|
|
|
+JJv92W4sPaPjeVHhvpFdC+a0RDQyb9X8s5xuUBVCyh7UlAs2dOHQ3kqAhhybATHl
|
|
|
+OvOksc8GFp9hxQZtqeVhmjMKjdJYMcIi8HLL3v/CvZO43ClohSRVB7mxNYm4ddTg
|
|
|
+c1jFmtBAUuu3ha7qm8CXQFAEYwf89PkjfhKXaALAVS09lpy8Qx3rCGjeuFbKHtVe
|
|
|
+dy/CZmjq3xHrJVNcKwaRFCXUroyuWjFlITyQCHjugh+6MiDnz3oP/4Y3rXaMag+E
|
|
|
+9QIDAQAB
|
|
|
+-----END PUBLIC KEY-----`
|
|
|
+
|
|
|
+var (
|
|
|
+ userName = "1234567890"
|
|
|
+ Password = "123"
|
|
|
+)
|
|
|
+
|
|
|
+func TestJWTTokenGenerate_GenerateToken(t *testing.T) {
|
|
|
+ key, err := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("cannot parse private key: %v", err)
|
|
|
+ }
|
|
|
+ g := NewJWTTokenGen("kpt-tmr-group", key)
|
|
|
+ g.nowFunc = func() time.Time {
|
|
|
+ return time.Unix(1516239022, 0)
|
|
|
+ }
|
|
|
+ token, err := g.GenerateToken(userName, 7200)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("cannot generate token: %v", err)
|
|
|
+ }
|
|
|
+ want := `eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNDYyMjIsImlhdCI6MTUxNjIzOTAyMiwiaXNzIjoia3B0LXRtci1ncm91cCIsInN1YiI6IjEyMzQ1Njc4OTAtMTIzIn0.fNKcmzjsghdCVn0ZhPHt3mg_I22IZvTQyMaN8xt9GHoZdUpml1sqZ24-mamCaIK1T-pP0USqc69ZkeUBjOz1hi-p0u3Z8u8J8uaaTh0RD7cYxhT6ey5-KzctiuiSutFH8G5Y3pZ3ffRO-b_8hKpTICFET9-3_4pWgtQ4_M76JnLZEm_0-3e4MA3GRba0S6ntZ19TiOeNkF30LQjQ3jCSp3xQb-NoDRdlQKWoYDAQI33RxAjtR5ZsLwee278qbzWjwtd_GyqJJuaokfFsc0JZXFSIOffK1S6qHijSsK85U6PciX05M6NkE9LMyAi990Q6iLk4NUrVE5gmEXA9MeEm0w`
|
|
|
+ if want != token {
|
|
|
+ t.Fatalf("wrong token generated. got: %q", token)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestJWTTokenVerifier_ParseToken(t *testing.T) {
|
|
|
+ publicKeyFromPEM, err := jwt.ParseRSAPublicKeyFromPEM([]byte(publicKey))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("cannot parse public key: %v", err)
|
|
|
+ }
|
|
|
+ v := &JWTTokenVerifier{PublicKey: publicKeyFromPEM}
|
|
|
+
|
|
|
+ token := `eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4Mjc3OTMsImlhdCI6MTY4OTgyMDU5MywiaXNzIjoia3B0LXRtci1ncm91cCIsInN1YiI6ImR1YW54aWFvZHVhbi1lMTBhZGMzOTQ5YmE1OWFiYmU1NmUwNTdmMjBmODgzZSJ9.cdtoNMAU5WEO-OTqHS9EQXvRBhanbB_B591LBxDeFkOe1QM7m1lZpLpV-BniK785ZMNmfjqTfSpXT2N2E53mjZn1MTmRhi2tsBhrlvm6VpvQES8_TSL8bOUhDOYjhnFYB_qpua_ykrmm1DAf8wDWBapx8gYRN8WmbeAxY6Q8bnU9CsBM_jeEzr-CDP73DuFZDX0cpf_AFYBYL7DNU_ju6ufP4HwGSfuGJXcTXqfQh5eUoAZuG_YgSC2DPoKPtKl1QD_oy1k-g6StkKWjGe8pfmx4FyqfTTV3bo-Uthr5RQ0CjLKseOnwuHt6J5GOcpttgA3GnSUxETUq5qMOenWnDA`
|
|
|
+ userNameVerifier, err := v.ParseToken(token)
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("Verifier token : %v", err)
|
|
|
+ }
|
|
|
+ want := "duanxiaoduan"
|
|
|
+ if want != userNameVerifier {
|
|
|
+ t.Fatalf("token err")
|
|
|
+ }
|
|
|
+}
|