go-micro errors on validator (OCIS-363)

This commit is contained in:
A.Unger
2020-08-19 11:29:39 +02:00
committed by Benedikt Kulmann
parent d59bc0b4b9
commit dedcbd0412
+58 -27
View File
@@ -5,6 +5,7 @@ import (
validation "github.com/go-ozzo/ozzo-validation/v4"
"github.com/go-ozzo/ozzo-validation/v4/is"
merrors "github.com/micro/go-micro/v2/errors"
"github.com/owncloud/ocis-settings/pkg/proto/v0"
)
@@ -32,43 +33,49 @@ func validateSaveBundle(req *proto.SaveBundleRequest) error {
validation.Field(&req.Bundle.DisplayName, validation.Required),
validation.Field(&req.Bundle.Settings, validation.Required),
); err != nil {
return err
return merrors.FromError(err)
}
if err := validateResource(req.Bundle.Resource); err != nil {
return err
return merrors.FromError(err)
}
for i := range req.Bundle.Settings {
if err := validateSetting(req.Bundle.Settings[i]); err != nil {
return err
return merrors.FromError(err)
}
}
return nil
}
func validateGetBundle(req *proto.GetBundleRequest) error {
return validation.Validate(&req.BundleId, requireAccountID...)
if err := validation.Validate(&req.BundleId, requireAccountID...); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateListBundles(req *proto.ListBundlesRequest) error {
return validation.Validate(&req.AccountUuid, requireAccountID...)
if err := validation.Validate(&req.AccountUuid, requireAccountID...); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateAddSettingToBundle(req *proto.AddSettingToBundleRequest) error {
if err := validation.ValidateStruct(
req,
validation.Field(&req.BundleId, is.UUID),
); err != nil {
return err
if err := validation.ValidateStruct(req, validation.Field(&req.BundleId, is.UUID)); err != nil {
return merrors.FromError(err)
}
return validateSetting(req.Setting)
}
func validateRemoveSettingFromBundle(req *proto.RemoveSettingFromBundleRequest) error {
return validation.ValidateStruct(
if err := validation.ValidateStruct(
req,
validation.Field(&req.BundleId, is.UUID),
validation.Field(&req.SettingId, is.UUID),
)
); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateSaveValue(req *proto.SaveValueRequest) error {
@@ -79,11 +86,11 @@ func validateSaveValue(req *proto.SaveValueRequest) error {
validation.Field(&req.Value.SettingId, is.UUID),
validation.Field(&req.Value.AccountUuid, requireAccountID...),
); err != nil {
return err
return merrors.FromError(err)
}
if err := validateResource(req.Value.Resource); err != nil {
return err
return merrors.FromError(err)
}
// TODO: validate values against the respective setting. need to check if constraints of the setting are fulfilled.
@@ -91,46 +98,67 @@ func validateSaveValue(req *proto.SaveValueRequest) error {
}
func validateGetValue(req *proto.GetValueRequest) error {
return validation.Validate(req.Id, is.UUID)
if err := validation.Validate(req.Id, is.UUID); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateListValues(req *proto.ListValuesRequest) error {
return validation.ValidateStruct(
if err := validation.ValidateStruct(
req,
validation.Field(&req.BundleId, validation.When(req.BundleId != "", is.UUID)),
validation.Field(&req.AccountUuid, validation.When(req.AccountUuid != "", validation.Match(regexForAccountUUID))),
)
); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateListRoles(req *proto.ListBundlesRequest) error {
return validation.Validate(&req.AccountUuid, requireAccountID...)
if err := validation.Validate(&req.AccountUuid, requireAccountID...); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateListRoleAssignments(req *proto.ListRoleAssignmentsRequest) error {
return validation.Validate(req.AccountUuid, requireAccountID...)
if err := validation.Validate(req.AccountUuid, requireAccountID...); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateAssignRoleToUser(req *proto.AssignRoleToUserRequest) error {
return validation.ValidateStruct(
if err := validation.ValidateStruct(
req,
validation.Field(&req.AccountUuid, requireAccountID...),
validation.Field(&req.RoleId, is.UUID),
)
); err != nil {
return merrors.FromError(err)
}
return nil
}
func validateRemoveRoleFromUser(req *proto.RemoveRoleFromUserRequest) error {
return validation.ValidateStruct(
if err := validation.ValidateStruct(
req,
validation.Field(&req.Id, is.UUID),
)
); err != nil {
return merrors.FromError(err)
}
return nil
}
// validateResource is an internal helper for validating the content of a resource.
func validateResource(resource *proto.Resource) error {
if err := validation.Validate(&resource, validation.Required); err != nil {
return err
return merrors.FromError(err)
}
return validation.Validate(&resource, validation.NotIn(proto.Resource_TYPE_UNKNOWN))
if err := validation.Validate(&resource, validation.NotIn(proto.Resource_TYPE_UNKNOWN)); err != nil {
return merrors.FromError(err)
}
return nil
}
// validateSetting is an internal helper for validating the content of a setting.
@@ -141,7 +169,10 @@ func validateSetting(setting *proto.Setting) error {
validation.Field(&setting.Id, validation.When(setting.Id != "", is.UUID)),
validation.Field(&setting.Name, requireAlphanumeric...),
); err != nil {
return err
return merrors.FromError(err)
}
return validateResource(setting.Resource)
if err := validateResource(setting.Resource); err != nil {
return merrors.FromError(err)
}
return nil
}