github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/graphql/bundle_validation.go (about)

     1  package graphql
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/kyma-incubator/compass/components/director/pkg/apperrors"
     7  
     8  	validation "github.com/go-ozzo/ozzo-validation/v4"
     9  	"github.com/go-ozzo/ozzo-validation/v4/is"
    10  	"github.com/kyma-incubator/compass/components/director/pkg/inputvalidation"
    11  )
    12  
    13  // Validate missing godoc
    14  func (i BundleCreateInput) Validate() error {
    15  	return validation.ValidateStruct(&i,
    16  		validation.Field(&i.Name, validation.Required, is.PrintableASCII, validation.Length(1, 100)),
    17  		validation.Field(&i.Description, validation.RuneLength(0, descriptionStringLengthLimit)),
    18  		validation.Field(&i.DefaultInstanceAuth, validation.NilOrNotEmpty),
    19  		validation.Field(&i.InstanceAuthRequestInputSchema, validation.NilOrNotEmpty),
    20  		validation.Field(&i.APIDefinitions, inputvalidation.Each(validation.Required)),
    21  		validation.Field(&i.EventDefinitions, inputvalidation.Each(validation.Required)),
    22  		validation.Field(&i.Documents, inputvalidation.Each(validation.Required)),
    23  	)
    24  }
    25  
    26  // Validate missing godoc
    27  func (i BundleUpdateInput) Validate() error {
    28  	return validation.ValidateStruct(&i,
    29  		validation.Field(&i.Name, validation.Required, is.PrintableASCII, validation.Length(1, 100)),
    30  		validation.Field(&i.Description, validation.RuneLength(0, descriptionStringLengthLimit)),
    31  		validation.Field(&i.DefaultInstanceAuth, validation.NilOrNotEmpty),
    32  		validation.Field(&i.InstanceAuthRequestInputSchema, validation.NilOrNotEmpty),
    33  	)
    34  }
    35  
    36  // Validate missing godoc
    37  func (i BundleInstanceAuthRequestInput) Validate() error {
    38  	// Validation of inputParams against JSON schema is done in Service
    39  	return validation.ValidateStruct(&i,
    40  		validation.Field(&i.ID, is.UUIDv4),
    41  		validation.Field(&i.Context, validation.NilOrNotEmpty),
    42  		validation.Field(&i.InputParams, validation.NilOrNotEmpty),
    43  	)
    44  }
    45  
    46  // Validate missing godoc
    47  func (i BundleInstanceAuthSetInput) Validate() error {
    48  	if i.Auth == nil && i.Status == nil {
    49  		return apperrors.NewInvalidDataError("at least one field (Auth or Status) has to be provided")
    50  	}
    51  
    52  	if i.Status != nil {
    53  		if i.Auth != nil && i.Status.Condition != BundleInstanceAuthSetStatusConditionInputSucceeded {
    54  			return fmt.Errorf("status condition has to be equal to %s when the auth is provided", BundleInstanceAuthSetStatusConditionInputSucceeded)
    55  		}
    56  
    57  		if i.Auth == nil && i.Status.Condition == BundleInstanceAuthSetStatusConditionInputSucceeded {
    58  			return fmt.Errorf("status cannot be equal to %s when auth is not provided", BundleInstanceAuthSetStatusConditionInputSucceeded)
    59  		}
    60  	}
    61  
    62  	return validation.ValidateStruct(&i,
    63  		validation.Field(&i.Status, validation.NilOrNotEmpty),
    64  		validation.Field(&i.Auth, validation.NilOrNotEmpty),
    65  	)
    66  }
    67  
    68  // Validate missing godoc
    69  func (i BundleInstanceAuthStatusInput) Validate() error {
    70  	return validation.ValidateStruct(&i,
    71  		validation.Field(&i.Reason, validation.Required),
    72  		validation.Field(&i.Message, validation.Required),
    73  		validation.Field(&i.Condition, validation.Required),
    74  	)
    75  }
    76  
    77  // Validate validates BundleInstanceAuthCreateInput
    78  func (i BundleInstanceAuthCreateInput) Validate() error {
    79  	if i.Auth == nil {
    80  		return apperrors.NewInvalidDataError("Auth should be provided")
    81  	}
    82  
    83  	// Exactly one of RuntimeID and RuntimeContextID should be provided
    84  	if i.RuntimeID == nil && i.RuntimeContextID == nil {
    85  		return apperrors.NewInvalidDataError("At least one of RuntimeID or RuntimeContextID should be provided")
    86  	} else if i.RuntimeID != nil && i.RuntimeContextID != nil {
    87  		return apperrors.NewInvalidDataError("Only one of RuntimeID or RuntimeContextID should be provided")
    88  	}
    89  
    90  	return validation.ValidateStruct(&i,
    91  		validation.Field(&i.Context, validation.NilOrNotEmpty),
    92  		validation.Field(&i.InputParams, validation.NilOrNotEmpty),
    93  	)
    94  }