github.com/lovung/GoCleanArchitecture@v0.0.0-20210302152432-50d91fd29f9f/pkg/jwtutil/jwt_test.go (about) 1 package jwtutil 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/google/go-cmp/cmp" 8 ) 9 10 func TestGenerateToken(t *testing.T) { 11 InitJWTSession("test_secret", time.Hour*12, time.Hour*24) 12 dummyIssueTime, _ := time.Parse(time.RFC3339, "2020-01-01T01:00:05Z") 13 tests := []struct { 14 name string 15 arg AuthClaims 16 wantAToken string 17 wantRToken string 18 }{ 19 { 20 name: "SuccsssCase: Correctly put claims", 21 arg: AuthClaims{ 22 UserID: 1, 23 IssueTime: dummyIssueTime, 24 }, 25 wantAToken: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.` + 26 `eyJleHAiOjE1Nzc4ODM2MDUsImlhdCI6MTU3Nzg0MDQwNSwidXNlcl9pZCI6MX0.` + 27 `_OuEn9wfc91EkxpMBu0OGwdwKBaP4jGNdqt0-TTwgbU`, 28 wantRToken: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.` + 29 `eyJleHAiOjE1Nzc5MjY4MDUsImlhdCI6MTU3Nzg0MDQwNSwidXNlcl9pZCI6MX0.` + 30 `eFZh2LXnYE5E4nWrmb7wLFyrY32I-U7r9ysIN4NSDIg`, 31 }, 32 } 33 34 for _, tt := range tests { 35 t.Run(tt.name, func(t *testing.T) { 36 gotAToken, gotRToken, _ := GenerateToken(tt.arg) 37 if gotAToken != tt.wantAToken { 38 t.Errorf("GenerateToken aToken = %v, want = %v", gotAToken, tt.wantAToken) 39 } 40 if gotRToken != tt.wantRToken { 41 t.Errorf("GenerateToken rToken = %v, want = %v", gotRToken, tt.wantRToken) 42 } 43 }) 44 } 45 } 46 47 func TestVerifyToken(t *testing.T) { 48 InitJWTSession("test_secret", time.Hour*12, time.Hour*24) 49 validToken, _, _ := GenerateToken( 50 AuthClaims{ 51 UserID: 1, 52 IssueTime: time.Now(), 53 }, 54 ) 55 56 dummyIssueTime, _ := time.Parse(time.RFC3339, "2020-01-01T01:00:05Z") 57 invalidToken, _, _ := GenerateToken( 58 AuthClaims{ 59 UserID: 1, 60 IssueTime: dummyIssueTime, 61 }, 62 ) 63 64 tests := []struct { 65 name string 66 arg string 67 want AuthClaims 68 wantErr bool 69 }{ 70 { 71 name: "SuccessCase: put the token issued right now", 72 arg: validToken, 73 want: AuthClaims{ 74 UserID: 1, 75 }, 76 wantErr: false, 77 }, 78 { 79 name: "FailureCase: put the token issued in the past", 80 arg: invalidToken, 81 want: AuthClaims{}, 82 wantErr: true, 83 }, 84 } 85 86 for _, tt := range tests { 87 t.Run(tt.name, func(t *testing.T) { 88 got, gotErr := VerifyToken(tt.arg) 89 if !cmp.Equal(got, tt.want) { 90 t.Errorf("VerifyToken: clamis = %v, want = %v", got, tt.want) 91 } 92 if (gotErr != nil) != tt.wantErr { 93 t.Errorf("VerifyToken: err = %v, want = %v", gotErr, tt.wantErr) 94 } 95 }) 96 } 97 }