diff --git a/internal/api/grpc/instance/v2/instance.go b/internal/api/grpc/instance/v2/instance.go index 7dcf8a828b2..2cfb31242d0 100644 --- a/internal/api/grpc/instance/v2/instance.go +++ b/internal/api/grpc/instance/v2/instance.go @@ -11,8 +11,8 @@ import ( func (s *Server) DeleteInstance(ctx context.Context, request *instance.DeleteInstanceRequest) (*instance.DeleteInstanceResponse, error) { instanceID := strings.TrimSpace(request.GetInstanceId()) - if instanceID == "" { - return nil, zerrors.ThrowInvalidArgument(nil, "instance_id", "instance id must not be empty") + if err := validateParam(instanceID, "instance_id"); err != nil { + return nil, err } obj, err := s.command.RemoveInstance(ctx, instanceID) @@ -28,8 +28,8 @@ func (s *Server) DeleteInstance(ctx context.Context, request *instance.DeleteIns func (s *Server) UpdateInstance(ctx context.Context, request *instance.UpdateInstanceRequest) (*instance.UpdateInstanceResponse, error) { instanceName := strings.TrimSpace(request.GetInstanceName()) - if instanceName == "" { - return nil, zerrors.ThrowInvalidArgument(nil, "instance_name", "instance name must not be empty") + if err := validateParam(instanceName, "instance_name"); err != nil { + return nil, err } obj, err := s.command.UpdateInstance(ctx, instanceName) @@ -41,3 +41,10 @@ func (s *Server) UpdateInstance(ctx context.Context, request *instance.UpdateIns Details: object.DomainToDetailsPb(obj), }, nil } + +func validateParam(param string, paramName string) error { + if strings.TrimSpace(param) == "" { + return zerrors.ThrowInvalidArgument(nil, paramName, paramName+" must not be empty") + } + return nil +} diff --git a/internal/api/grpc/instance/v2/instance_test.go b/internal/api/grpc/instance/v2/instance_test.go new file mode 100644 index 00000000000..bff1ca4e68e --- /dev/null +++ b/internal/api/grpc/instance/v2/instance_test.go @@ -0,0 +1,27 @@ +package instance + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/zitadel/zitadel/internal/zerrors" +) + +func TestValidateParam(t *testing.T) { + tt := []struct { + param string + paramName string + expectedErr error + }{ + {"", "instance_id", zerrors.ThrowInvalidArgument(nil, "instance_id", "instance_id must not be empty")}, + {" ", "instance_id", zerrors.ThrowInvalidArgument(nil, "instance_id", "instance_id must not be empty")}, + {"valid_id", "instance_id", nil}, + } + + for _, tc := range tt { + t.Run(tc.param, func(t *testing.T) { + err := validateParam(tc.param, tc.paramName) + assert.Equal(t, tc.expectedErr, err) + }) + } +}