github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/verify-install/validators/component_validator_basic_test.go (about)

     1  // Copyright (c) 2022, 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  package validators
     4  
     5  import (
     6  	. "github.com/onsi/gomega"
     7  	"github.com/verrazzano/verrazzano/platform-operator/apis/verrazzano/v1alpha1"
     8  	"github.com/verrazzano/verrazzano/platform-operator/apis/verrazzano/v1beta1"
     9  	"github.com/verrazzano/verrazzano/tests/e2e/pkg/update"
    10  	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    11  	"sigs.k8s.io/controller-runtime/pkg/client"
    12  	"time"
    13  )
    14  
    15  const (
    16  	waitTimeout     = 3 * time.Minute
    17  	pollingInterval = 10 * time.Second
    18  
    19  	expectedJaegerErrorMessage = "the Jaeger Operator Helm chart value nameOverride cannot be overridden"
    20  )
    21  
    22  type jaegerIllegalUpdater struct{}
    23  
    24  func (j jaegerIllegalUpdater) ModifyCRV1beta1(cr *v1beta1.Verrazzano) {
    25  	// Attempt to make an illegal edit to the Jaeger configuration to ensure its component validation is working properly
    26  	trueValue := true
    27  	if cr.Spec.Components.JaegerOperator == nil {
    28  		cr.Spec.Components.JaegerOperator = &v1beta1.JaegerOperatorComponent{}
    29  	}
    30  	cr.Spec.Components.JaegerOperator.Enabled = &trueValue
    31  	illegalOverride := `{"nameOverride": "testjaeger"}`
    32  	illegalValuesObj := &apiextensionsv1.JSON{
    33  		Raw: []byte(illegalOverride),
    34  	}
    35  	cr.Spec.Components.JaegerOperator.InstallOverrides.ValueOverrides = append(
    36  		cr.Spec.Components.JaegerOperator.InstallOverrides.ValueOverrides,
    37  		v1beta1.Overrides{Values: illegalValuesObj})
    38  }
    39  
    40  func (j jaegerIllegalUpdater) ModifyCR(cr *v1alpha1.Verrazzano) {
    41  	// Attempt to make an illegal edit to the Jaeger configuration to ensure its component validation is working properly
    42  	trueValue := true
    43  	if cr.Spec.Components.JaegerOperator == nil {
    44  		cr.Spec.Components.JaegerOperator = &v1alpha1.JaegerOperatorComponent{}
    45  	}
    46  	cr.Spec.Components.JaegerOperator.Enabled = &trueValue
    47  	illegalOverride := `{"nameOverride": "testjaeger"}`
    48  	illegalValuesObj := &apiextensionsv1.JSON{
    49  		Raw: []byte(illegalOverride),
    50  	}
    51  	cr.Spec.Components.JaegerOperator.InstallOverrides.ValueOverrides = append(
    52  		cr.Spec.Components.JaegerOperator.InstallOverrides.ValueOverrides,
    53  		v1alpha1.Overrides{Values: illegalValuesObj})
    54  }
    55  
    56  var _ update.CRModifier = jaegerIllegalUpdater{}
    57  var _ update.CRModifierV1beta1 = jaegerIllegalUpdater{}
    58  
    59  // runValidatorTestV1Beta1 Attempt to use an illegal overrides value on the Jaeger operator configuration using the v1beta1 API
    60  func runValidatorTestV1Beta1() {
    61  	Eventually(func() string {
    62  		err := update.UpdateCRV1beta1(jaegerIllegalUpdater{}, client.DryRunAll)
    63  		if err == nil {
    64  			return "Did not get an error on illegal update"
    65  		}
    66  		t.Logs.Infof("Update error: %s", err.Error())
    67  		return err.Error()
    68  	}, waitTimeout, pollingInterval).Should(ContainSubstring(expectedJaegerErrorMessage))
    69  }
    70  
    71  // runValidatorTestV1Alpha1 Attempt to use an illegal overrides value on the Jaeger operator configuration using the v1alpha1 API
    72  func runValidatorTestV1Alpha1() {
    73  	Eventually(func() string {
    74  		err := update.UpdateCR(jaegerIllegalUpdater{}, client.DryRunAll)
    75  		if err == nil {
    76  			return "Did not get an error on illegal update"
    77  		}
    78  		t.Logs.Infof("Update error: %s", err.Error())
    79  		return err.Error()
    80  	}, waitTimeout, pollingInterval).Should(ContainSubstring(expectedJaegerErrorMessage))
    81  }