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 }