diff --git a/controller/rbac/jwtManager_test.go b/controller/rbac/jwtManager_test.go new file mode 100644 index 0000000000000000000000000000000000000000..e79ec1b9ae4824066cf829b9c617fc5376f4ba1b --- /dev/null +++ b/controller/rbac/jwtManager_test.go @@ -0,0 +1,110 @@ +package rbac + +import ( + "reflect" + "testing" + "time" + + "github.com/golang-jwt/jwt" +) + +func TestJWTManager_GenerateToken(t *testing.T) { + type fields struct { + secretKey string + tokenDuration time.Duration + } + type args struct { + user User + } + tests := []struct { + name string + fields fields + args args + want string + wantErr bool + }{ + { + name: "default generate token", + fields: fields{ + secretKey: "", + tokenDuration: 1 * time.Minute, + }, + args: args{ + user: User{ + UserName: "testUser", + }, + }, + want: "testUser", + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + man := &JWTManager{ + secretKey: tt.fields.secretKey, + tokenDuration: tt.fields.tokenDuration, + } + got, err := man.GenerateToken(tt.args.user) + if (err != nil) != tt.wantErr { + t.Errorf("JWTManager.GenerateToken() error = %v, wantErr %v", err, tt.wantErr) + return + } + + gotClaims, _ := man.VerifyToken(got) + claimsUser := gotClaims.Username + + if claimsUser != tt.want { + t.Errorf("JWTManager.GenerateToken() = %v, want %v", claimsUser, tt.want) + } + }) + } +} + +func TestJWTManager_VerifyToken(t *testing.T) { + type fields struct { + secretKey string + tokenDuration time.Duration + } + tests := []struct { + name string + fields fields + userName string + want *UserClaims + wantErr bool + }{ + { + name: "default verify token", + fields: fields{ + secretKey: "", + tokenDuration: 1 * time.Minute, + }, + userName: "testUser", + want: &UserClaims{ + StandardClaims: jwt.StandardClaims{ + ExpiresAt: time.Now().Add(1 * time.Minute).Unix(), + }, + Username: "testUser", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + man := &JWTManager{ + secretKey: tt.fields.secretKey, + tokenDuration: tt.fields.tokenDuration, + } + + token, err := man.GenerateToken(User{UserName: tt.userName}) + got, err := man.VerifyToken(token) + if (err != nil) != tt.wantErr { + t.Errorf("JWTManager.VerifyToken() error = %v, wantErr %v", err, tt.wantErr) + return + } + + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("JWTManager.VerifyToken() = %v, want %v", got, tt.want) + } + }) + } +}