You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ti...@apache.org on 2021/05/26 08:57:54 UTC
[servicecomb-service-center] branch master updated: validate
account creation (#1009)
This is an automated email from the ASF dual-hosted git repository.
tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git
The following commit(s) were added to refs/heads/master by this push:
new e338b4a validate account creation (#1009)
e338b4a is described below
commit e338b4a07fbda8c7bb086b259d5d1f1edf29769e
Author: Shawn <xi...@gmail.com>
AuthorDate: Wed May 26 16:57:44 2021 +0800
validate account creation (#1009)
---
server/resource/v4/auth_resource.go | 8 +--
server/rest/govern/service.go | 4 +-
server/service/dependency.go | 9 +--
server/service/instance.go | 19 +++---
server/service/microservice.go | 15 +++--
server/service/rbac/rbac.go | 4 +-
server/service/rule.go | 9 +--
server/service/schema.go | 11 ++--
server/service/tag.go | 9 +--
.../{ => validator}/dependency_validator.go | 2 +-
.../service/{ => validator}/instance_validator.go | 2 +-
.../{ => validator}/microservice_validator.go | 2 +-
server/service/{ => validator}/rule_validator.go | 2 +-
server/service/{ => validator}/schema_validator.go | 2 +-
server/service/{ => validator}/tag_validator.go | 2 +-
.../{validate.go => validator/validator.go} | 14 ++--
server/service/validator/validator_test.go | 74 ++++++++++++++++++++++
17 files changed, 132 insertions(+), 56 deletions(-)
diff --git a/server/resource/v4/auth_resource.go b/server/resource/v4/auth_resource.go
index b6b6491..19ede1d 100644
--- a/server/resource/v4/auth_resource.go
+++ b/server/resource/v4/auth_resource.go
@@ -29,9 +29,9 @@ import (
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/rest"
"github.com/apache/servicecomb-service-center/pkg/util"
- "github.com/apache/servicecomb-service-center/server/service"
rbacsvc "github.com/apache/servicecomb-service-center/server/service/rbac"
"github.com/apache/servicecomb-service-center/server/service/rbac/dao"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"github.com/go-chassis/cari/discovery"
"github.com/go-chassis/cari/rbac"
@@ -66,7 +66,7 @@ func (ar *AuthResource) CreateAccount(w http.ResponseWriter, req *http.Request)
rest.WriteError(w, discovery.ErrInvalidParams, errorsEx.MsgJSON)
return
}
- err = service.ValidateCreateAccount(a)
+ err = validator.ValidateCreateAccount(a)
if err != nil {
rest.WriteError(w, discovery.ErrInvalidParams, err.Error())
return
@@ -168,7 +168,7 @@ func (ar *AuthResource) ChangePassword(w http.ResponseWriter, req *http.Request)
return
}
a.Name = req.URL.Query().Get(":name")
- err = service.ValidateChangePWD(a)
+ err = validator.ValidateChangePWD(a)
if err != nil {
rest.WriteError(w, discovery.ErrInvalidParams, err.Error())
return
@@ -219,7 +219,7 @@ func (ar *AuthResource) Login(w http.ResponseWriter, r *http.Request) {
if a.TokenExpirationTime == "" {
a.TokenExpirationTime = "30m"
}
- err = service.ValidateAccountLogin(a)
+ err = validator.ValidateAccountLogin(a)
if err != nil {
rest.WriteError(w, discovery.ErrInvalidParams, err.Error())
return
diff --git a/server/rest/govern/service.go b/server/rest/govern/service.go
index 6336891..4c35b1a 100644
--- a/server/rest/govern/service.go
+++ b/server/rest/govern/service.go
@@ -19,13 +19,13 @@ package govern
import (
"context"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
pb "github.com/go-chassis/cari/discovery"
"github.com/apache/servicecomb-service-center/datasource"
"github.com/apache/servicecomb-service-center/pkg/proto"
"github.com/apache/servicecomb-service-center/pkg/util"
- "github.com/apache/servicecomb-service-center/server/service"
)
var ServiceAPI proto.GovernServiceCtrlServer = &Service{}
@@ -51,7 +51,7 @@ func (governService *Service) GetServiceDetail(ctx context.Context, in *pb.GetSe
}
func (governService *Service) GetApplications(ctx context.Context, in *pb.GetAppsRequest) (*pb.GetAppsResponse, error) {
- err := service.Validate(in)
+ err := validator.Validate(in)
if err != nil {
return &pb.GetAppsResponse{
Response: pb.CreateResponse(pb.ErrInvalidParams, err.Error()),
diff --git a/server/service/dependency.go b/server/service/dependency.go
index 509889b..467cdd0 100644
--- a/server/service/dependency.go
+++ b/server/service/dependency.go
@@ -19,6 +19,7 @@ package service
import (
"context"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"github.com/apache/servicecomb-service-center/datasource"
"github.com/apache/servicecomb-service-center/pkg/log"
@@ -27,7 +28,7 @@ import (
func (s *MicroServiceService) AddDependenciesForMicroServices(ctx context.Context,
in *pb.AddDependenciesRequest) (*pb.AddDependenciesResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
return &pb.AddDependenciesResponse{
Response: datasource.BadParamsResponse(err.Error()).Response,
}, nil
@@ -39,7 +40,7 @@ func (s *MicroServiceService) AddDependenciesForMicroServices(ctx context.Contex
func (s *MicroServiceService) CreateDependenciesForMicroServices(ctx context.Context,
in *pb.CreateDependenciesRequest) (*pb.CreateDependenciesResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
return &pb.CreateDependenciesResponse{
Response: datasource.BadParamsResponse(err.Error()).Response,
}, nil
@@ -51,7 +52,7 @@ func (s *MicroServiceService) CreateDependenciesForMicroServices(ctx context.Con
func (s *MicroServiceService) GetProviderDependencies(ctx context.Context,
in *pb.GetDependenciesRequest) (*pb.GetProDependenciesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "GetProviderDependencies failed for validating parameters failed")
return &pb.GetProDependenciesResponse{
@@ -63,7 +64,7 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context,
}
func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *pb.GetDependenciesRequest) (*pb.GetConDependenciesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "GetConsumerDependencies failed for validating parameters failed")
return &pb.GetConDependenciesResponse{
diff --git a/server/service/instance.go b/server/service/instance.go
index 5628d65..f2fbf7a 100644
--- a/server/service/instance.go
+++ b/server/service/instance.go
@@ -21,6 +21,7 @@ import (
"context"
"errors"
"fmt"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
pb "github.com/go-chassis/cari/discovery"
@@ -36,7 +37,7 @@ type InstanceService struct {
}
func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceRequest) (*pb.RegisterInstanceResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "register instance failed, invalid parameters, operator %s", remoteIP)
return &pb.RegisterInstanceResponse{
@@ -65,7 +66,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
func (s *InstanceService) Unregister(ctx context.Context,
in *pb.UnregisterInstanceRequest) (*pb.UnregisterInstanceResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "unregister instance failed, invalid parameters, operator %s", remoteIP)
return &pb.UnregisterInstanceResponse{
@@ -77,7 +78,7 @@ func (s *InstanceService) Unregister(ctx context.Context,
}
func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest) (*pb.HeartbeatResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "heartbeat failed, invalid parameters, operator %s", remoteIP)
return &pb.HeartbeatResponse{
@@ -101,7 +102,7 @@ func (s *InstanceService) HeartbeatSet(ctx context.Context,
func (s *InstanceService) GetOneInstance(ctx context.Context,
in *pb.GetOneInstanceRequest) (*pb.GetOneInstanceResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "get instance failed: invalid parameters")
return &pb.GetOneInstanceResponse{
@@ -113,7 +114,7 @@ func (s *InstanceService) GetOneInstance(ctx context.Context,
}
func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesRequest) (*pb.GetInstancesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "get instances failed: invalid parameters")
return &pb.GetInstancesResponse{
@@ -125,7 +126,7 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
}
func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest) (*pb.FindInstancesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "find instance failed: invalid parameters")
return &pb.FindInstancesResponse{
@@ -145,7 +146,7 @@ func (s *InstanceService) BatchFind(ctx context.Context, in *pb.BatchFindInstanc
}, nil
}
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "batch find instance failed: invalid parameters")
return &pb.BatchFindInstancesResponse{
@@ -157,7 +158,7 @@ func (s *InstanceService) BatchFind(ctx context.Context, in *pb.BatchFindInstanc
}
func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanceStatusRequest) (*pb.UpdateInstanceStatusResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
updateStatusFlag := util.StringJoin([]string{in.ServiceId, in.InstanceId, in.Status}, "/")
log.Errorf(nil, "update instance[%s] status failed", updateStatusFlag)
return &pb.UpdateInstanceStatusResponse{
@@ -169,7 +170,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
}
func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.UpdateInstancePropsRequest) (*pb.UpdateInstancePropsResponse, error) {
- if err := Validate(in); err != nil {
+ if err := validator.Validate(in); err != nil {
instanceFlag := util.StringJoin([]string{in.ServiceId, in.InstanceId}, "/")
log.Errorf(nil, "update instance[%s] properties failed", instanceFlag)
return &pb.UpdateInstancePropsResponse{
diff --git a/server/service/microservice.go b/server/service/microservice.go
index 1bf0de3..158c630 100644
--- a/server/service/microservice.go
+++ b/server/service/microservice.go
@@ -20,6 +20,7 @@ package service
import (
"context"
"fmt"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
pb "github.com/go-chassis/cari/discovery"
@@ -71,7 +72,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
domainProject := util.ParseDomainProject(ctx)
datasource.SetServiceDefaultValue(service)
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "create micro-service[%s] failed, operator: %s",
serviceFlag, remoteIP)
@@ -97,7 +98,7 @@ func (s *MicroServiceService) CreateServicePri(ctx context.Context, in *pb.Creat
func (s *MicroServiceService) Delete(ctx context.Context, in *pb.DeleteServiceRequest) (*pb.DeleteServiceResponse, error) {
remoteIP := util.GetIPFromContext(ctx)
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "delete micro-service[%s] failed, operator: %s", in.ServiceId, remoteIP)
return &pb.DeleteServiceResponse{
@@ -138,7 +139,7 @@ func (s *MicroServiceService) DeleteServices(ctx context.Context, request *pb.De
ServiceId: serviceID,
Force: request.Force,
}
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "delete micro-service[%s] failed, operator: %s", in.ServiceId, remoteIP)
serviceRespChan <- &pb.DelServicesRspInfo{
@@ -203,7 +204,7 @@ func (s *MicroServiceService) getDeleteServiceFunc(ctx context.Context, serviceI
}
func (s *MicroServiceService) GetOne(ctx context.Context, in *pb.GetServiceRequest) (*pb.GetServiceResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "get micro-service[%s] failed", in.ServiceId)
return &pb.GetServiceResponse{
@@ -219,7 +220,7 @@ func (s *MicroServiceService) GetServices(ctx context.Context, in *pb.GetService
}
func (s *MicroServiceService) UpdateProperties(ctx context.Context, in *pb.UpdateServicePropsRequest) (*pb.UpdateServicePropsResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "update service[%s] properties failed, operator: %s", in.ServiceId, remoteIP)
@@ -234,7 +235,7 @@ func (s *MicroServiceService) UpdateProperties(ctx context.Context, in *pb.Updat
func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequest) (*pb.GetExistenceResponse, error) {
switch in.Type {
case ExistTypeMicroservice:
- err := ExistenceReqValidator().Validate(in)
+ err := validator.ExistenceReqValidator().Validate(in)
if err != nil {
serviceFlag := util.StringJoin([]string{in.Environment, in.AppId, in.ServiceName, in.Version}, "/")
log.Errorf(err, "micro-service[%s] exist failed", serviceFlag)
@@ -245,7 +246,7 @@ func (s *MicroServiceService) Exist(ctx context.Context, in *pb.GetExistenceRequ
return datasource.Instance().ExistService(ctx, in)
case ExistTypeSchema:
- err := GetSchemaReqValidator().Validate(in)
+ err := validator.GetSchemaReqValidator().Validate(in)
if err != nil {
log.Errorf(err, "schema[%s/%s] exist failed", in.ServiceId, in.SchemaId)
return &pb.GetExistenceResponse{
diff --git a/server/service/rbac/rbac.go b/server/service/rbac/rbac.go
index ed5f563..f7e5aa4 100644
--- a/server/service/rbac/rbac.go
+++ b/server/service/rbac/rbac.go
@@ -21,6 +21,7 @@ import (
"context"
"crypto/rsa"
"errors"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"io/ioutil"
"github.com/go-chassis/cari/rbac"
@@ -29,7 +30,6 @@ import (
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/server/config"
"github.com/apache/servicecomb-service-center/server/plugin/security/cipher"
- "github.com/apache/servicecomb-service-center/server/service"
"github.com/apache/servicecomb-service-center/server/service/rbac/dao"
"github.com/go-chassis/go-archaius"
"github.com/go-chassis/go-chassis/v2/security/authr"
@@ -119,7 +119,7 @@ func initFirstTime(admin string) {
Password: pwd,
Roles: []string{rbac.RoleAdmin},
}
- err = service.ValidateCreateAccount(a)
+ err = validator.ValidateCreateAccount(a)
if err != nil {
log.Fatal("invalid pwd", err)
return
diff --git a/server/service/rule.go b/server/service/rule.go
index 642b77c..f2c00c1 100644
--- a/server/service/rule.go
+++ b/server/service/rule.go
@@ -19,6 +19,7 @@ package service
import (
"context"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"github.com/apache/servicecomb-service-center/datasource"
"github.com/apache/servicecomb-service-center/pkg/log"
@@ -27,7 +28,7 @@ import (
)
func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRulesRequest) (*pb.AddServiceRulesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "add service[%s] rule failed, operator: %s", in.ServiceId, remoteIP)
@@ -40,7 +41,7 @@ func (s *MicroServiceService) AddRule(ctx context.Context, in *pb.AddServiceRule
}
func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServiceRuleRequest) (*pb.UpdateServiceRuleResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "update service rule[%s/%s] failed, operator: %s", in.ServiceId, in.RuleId, remoteIP)
@@ -53,7 +54,7 @@ func (s *MicroServiceService) UpdateRule(ctx context.Context, in *pb.UpdateServi
}
func (s *MicroServiceService) GetRule(ctx context.Context, in *pb.GetServiceRulesRequest) (*pb.GetServiceRulesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "get service[%s] rule failed", in.ServiceId)
return &pb.GetServiceRulesResponse{
@@ -65,7 +66,7 @@ func (s *MicroServiceService) GetRule(ctx context.Context, in *pb.GetServiceRule
}
func (s *MicroServiceService) DeleteRule(ctx context.Context, in *pb.DeleteServiceRulesRequest) (*pb.DeleteServiceRulesResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "delete service[%s] rules %v failed, operator: %s", in.ServiceId, in.RuleIds, remoteIP)
diff --git a/server/service/schema.go b/server/service/schema.go
index e139e7e..c26da98 100644
--- a/server/service/schema.go
+++ b/server/service/schema.go
@@ -22,13 +22,14 @@ import (
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/util"
"github.com/apache/servicecomb-service-center/server/plugin/quota"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
pb "github.com/go-chassis/cari/discovery"
"context"
)
func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchemaRequest) (*pb.GetSchemaResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(nil, "get schema[%s/%s] failed", in.ServiceId, in.SchemaId)
return &pb.GetSchemaResponse{
@@ -40,7 +41,7 @@ func (s *MicroServiceService) GetSchemaInfo(ctx context.Context, in *pb.GetSchem
}
func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAllSchemaRequest) (*pb.GetAllSchemaResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(nil, "get service[%s] all schemas failed", in.ServiceId)
return &pb.GetAllSchemaResponse{
@@ -52,7 +53,7 @@ func (s *MicroServiceService) GetAllSchemaInfo(ctx context.Context, in *pb.GetAl
}
func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSchemaRequest) (*pb.DeleteSchemaResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "delete schema[%s/%s] failed, operator: %s", in.ServiceId, in.SchemaId, remoteIP)
@@ -77,7 +78,7 @@ func (s *MicroServiceService) DeleteSchema(ctx context.Context, in *pb.DeleteSch
// the new schemaID will be automatically added to the service information.
// Schema is allowed to add/delete/modify.
func (s *MicroServiceService) ModifySchemas(ctx context.Context, in *pb.ModifySchemasRequest) (*pb.ModifySchemasResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "modify service[%s] schemas failed, operator: %s", in.ServiceId, remoteIP)
@@ -123,7 +124,7 @@ func (s *MicroServiceService) canModifySchema(ctx context.Context, domainProject
serviceID, schemaID, remoteIP)
return pb.NewError(pb.ErrInvalidParams, "serviceID or schemaID is nil")
}
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "update schema[%s/%s] failed, operator: %s", serviceID, schemaID, remoteIP)
return pb.NewError(pb.ErrInvalidParams, err.Error())
diff --git a/server/service/tag.go b/server/service/tag.go
index 96300ba..7767457 100644
--- a/server/service/tag.go
+++ b/server/service/tag.go
@@ -19,6 +19,7 @@ package service
import (
"context"
+ "github.com/apache/servicecomb-service-center/server/service/validator"
"github.com/apache/servicecomb-service-center/datasource"
"github.com/apache/servicecomb-service-center/pkg/log"
@@ -27,7 +28,7 @@ import (
)
func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTagsRequest) (*pb.AddServiceTagsResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "add service[%s]'s tags %v failed, operator: %s", in.ServiceId, in.Tags, remoteIP)
@@ -40,7 +41,7 @@ func (s *MicroServiceService) AddTags(ctx context.Context, in *pb.AddServiceTags
}
func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServiceTagRequest) (*pb.UpdateServiceTagResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
tagFlag := util.StringJoin([]string{in.Key, in.Value}, "/")
@@ -54,7 +55,7 @@ func (s *MicroServiceService) UpdateTag(ctx context.Context, in *pb.UpdateServic
}
func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServiceTagsRequest) (*pb.DeleteServiceTagsResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
remoteIP := util.GetIPFromContext(ctx)
log.Errorf(err, "delete service[%s]'s tags %v failed, operator: %s", in.ServiceId, in.Keys, remoteIP)
@@ -67,7 +68,7 @@ func (s *MicroServiceService) DeleteTags(ctx context.Context, in *pb.DeleteServi
}
func (s *MicroServiceService) GetTags(ctx context.Context, in *pb.GetServiceTagsRequest) (*pb.GetServiceTagsResponse, error) {
- err := Validate(in)
+ err := validator.Validate(in)
if err != nil {
log.Errorf(err, "get service[%s]'s tags failed", in.ServiceId)
return &pb.GetServiceTagsResponse{
diff --git a/server/service/dependency_validator.go b/server/service/validator/dependency_validator.go
similarity index 99%
rename from server/service/dependency_validator.go
rename to server/service/validator/dependency_validator.go
index 84bdc6a..024c860 100644
--- a/server/service/dependency_validator.go
+++ b/server/service/validator/dependency_validator.go
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package service
+package validator
import (
"regexp"
diff --git a/server/service/instance_validator.go b/server/service/validator/instance_validator.go
similarity index 99%
rename from server/service/instance_validator.go
rename to server/service/validator/instance_validator.go
index d8c443c..78fcb02 100644
--- a/server/service/instance_validator.go
+++ b/server/service/validator/instance_validator.go
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package service
+package validator
import (
"math"
diff --git a/server/service/microservice_validator.go b/server/service/validator/microservice_validator.go
similarity index 99%
rename from server/service/microservice_validator.go
rename to server/service/validator/microservice_validator.go
index 266a9db..44d4b53 100644
--- a/server/service/microservice_validator.go
+++ b/server/service/validator/microservice_validator.go
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package service
+package validator
import (
"regexp"
diff --git a/server/service/rule_validator.go b/server/service/validator/rule_validator.go
similarity index 99%
rename from server/service/rule_validator.go
rename to server/service/validator/rule_validator.go
index 306ee5d..6f7c7d4 100644
--- a/server/service/rule_validator.go
+++ b/server/service/validator/rule_validator.go
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package service
+package validator
import (
"regexp"
diff --git a/server/service/schema_validator.go b/server/service/validator/schema_validator.go
similarity index 99%
rename from server/service/schema_validator.go
rename to server/service/validator/schema_validator.go
index 07392d2..7cecff5 100644
--- a/server/service/schema_validator.go
+++ b/server/service/validator/schema_validator.go
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package service
+package validator
import (
"regexp"
diff --git a/server/service/tag_validator.go b/server/service/validator/tag_validator.go
similarity index 99%
rename from server/service/tag_validator.go
rename to server/service/validator/tag_validator.go
index 4acc235..bdd00af 100644
--- a/server/service/tag_validator.go
+++ b/server/service/validator/tag_validator.go
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package service
+package validator
import (
"regexp"
diff --git a/server/service/validate.go b/server/service/validator/validator.go
similarity index 93%
rename from server/service/validate.go
rename to server/service/validator/validator.go
index 812cd7c..e9823ab 100644
--- a/server/service/validate.go
+++ b/server/service/validator/validator.go
@@ -15,17 +15,15 @@
* limitations under the License.
*/
-package service
+package validator
import (
"errors"
- "reflect"
- "regexp"
-
"github.com/apache/servicecomb-service-center/pkg/log"
"github.com/apache/servicecomb-service-center/pkg/validate"
pb "github.com/go-chassis/cari/discovery"
"github.com/go-chassis/cari/rbac"
+ "reflect"
)
var createAccountValidator = &validate.Validator{}
@@ -33,14 +31,12 @@ var changePWDValidator = &validate.Validator{}
var accountLoginValidator = &validate.Validator{}
func init() {
- var roleRegex, _ = regexp.Compile(`^$|^(admin|developer|[a-zA-Z]\w{2,15})$`)
- var accountRegex, _ = regexp.Compile(`^[a-zA-Z]\w{3,15}$`)
- createAccountValidator.AddRule("Name", &validate.Rule{Regexp: accountRegex})
- createAccountValidator.AddRule("Roles", &validate.Rule{Min: 1, Regexp: roleRegex})
+ createAccountValidator.AddRule("Name", &validate.Rule{Max: 64, Regexp: nameRegex})
+ createAccountValidator.AddRule("Roles", &validate.Rule{Min: 1, Regexp: nameRegex})
createAccountValidator.AddRule("Password", &validate.Rule{Regexp: &validate.PasswordChecker{}})
changePWDValidator.AddRule("Password", &validate.Rule{Regexp: &validate.PasswordChecker{}})
- changePWDValidator.AddRule("Name", &validate.Rule{Regexp: accountRegex})
+ changePWDValidator.AddRule("Name", &validate.Rule{Regexp: nameRegex})
accountLoginValidator.AddRule("TokenExpirationTime", &validate.Rule{Regexp: &validate.TokenExpirationTimeChecker{}})
}
diff --git a/server/service/validator/validator_test.go b/server/service/validator/validator_test.go
new file mode 100644
index 0000000..e5faabf
--- /dev/null
+++ b/server/service/validator/validator_test.go
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package validator_test
+
+import (
+ "github.com/apache/servicecomb-service-center/server/service/validator"
+ "testing"
+
+ "github.com/go-chassis/cari/rbac"
+)
+
+func TestValidateCreateAccount(t *testing.T) {
+ type args struct {
+ a *rbac.Account
+ }
+ tests := []struct {
+ name string
+ args args
+ wantErr bool
+ }{
+ {name: "given valid field",
+ args: args{a: &rbac.Account{
+ Name: "tester-_1",
+ Password: "Pwd0000_1",
+ Roles: []string{"admin", "developer"},
+ }},
+ wantErr: false,
+ },
+ {name: "given invalid account name",
+ args: args{a: &rbac.Account{
+ Name: "tester*",
+ Password: "Pwd0000_1",
+ Roles: []string{"admin-2", "developer", "admin-a", "admin.a"},
+ }},
+ wantErr: true,
+ },
+ {name: "given invalid account name",
+ args: args{a: &rbac.Account{
+ Name: "tester*a",
+ Password: "Pwd0000_1",
+ Roles: []string{"admin", "developer"},
+ }},
+ wantErr: true,
+ },
+ {name: "given invalid role name",
+ args: args{a: &rbac.Account{
+ Name: "tester",
+ Password: "Pwd0000_1",
+ Roles: []string{"adm*in", "developer"},
+ }},
+ wantErr: true,
+ },
+ }
+ for _, tt := range tests {
+ if err := validator.ValidateCreateAccount(tt.args.a); (err != nil) != tt.wantErr {
+ t.Errorf("%q. ValidateCreateAccount() error = %v, wantErr %v", tt.name, err, tt.wantErr)
+ }
+ }
+}