@@ -461,6 +461,7 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
461461 },
462462 },
463463 IsSingleOwnNamespaceEnabled : true ,
464+ IsDeploymentConfigEnabled : true ,
464465 }
465466
466467 bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
@@ -492,6 +493,7 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
492493 },
493494 },
494495 IsSingleOwnNamespaceEnabled : true ,
496+ IsDeploymentConfigEnabled : true ,
495497 }
496498
497499 bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
@@ -524,6 +526,7 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
524526 },
525527 },
526528 IsSingleOwnNamespaceEnabled : true ,
529+ IsDeploymentConfigEnabled : true ,
527530 }
528531
529532 bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
@@ -566,6 +569,7 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
566569 },
567570 },
568571 IsSingleOwnNamespaceEnabled : true ,
572+ IsDeploymentConfigEnabled : true ,
569573 }
570574
571575 bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
@@ -602,6 +606,7 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
602606 },
603607 },
604608 IsSingleOwnNamespaceEnabled : true ,
609+ IsDeploymentConfigEnabled : true ,
605610 }
606611
607612 bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
@@ -631,6 +636,7 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
631636 },
632637 },
633638 IsSingleOwnNamespaceEnabled : true ,
639+ IsDeploymentConfigEnabled : true ,
634640 }
635641
636642 bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
@@ -654,6 +660,70 @@ func Test_RegistryV1ManifestProvider_DeploymentConfig(t *testing.T) {
654660 require .Contains (t , err .Error (), "deploymentConfig.env" )
655661 require .ErrorIs (t , err , reconcile .TerminalError (nil ), "config validation errors should be terminal" )
656662 })
663+
664+ t .Run ("returns terminal error when deploymentConfig is used but feature gate is disabled" , func (t * testing.T ) {
665+ provider := applier.RegistryV1ManifestProvider {
666+ BundleRenderer : render.BundleRenderer {
667+ ResourceGenerators : []render.ResourceGenerator {
668+ func (rv1 * bundle.RegistryV1 , opts render.Options ) ([]client.Object , error ) {
669+ return nil , nil
670+ },
671+ },
672+ },
673+ IsSingleOwnNamespaceEnabled : true ,
674+ IsDeploymentConfigEnabled : false ,
675+ }
676+
677+ bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
678+ WithCSV (clusterserviceversion .Builder ().WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces ).Build ()).Build ()
679+
680+ _ , err := provider .Get (bundleFS , & ocv1.ClusterExtension {
681+ Spec : ocv1.ClusterExtensionSpec {
682+ Namespace : "install-namespace" ,
683+ Config : & ocv1.ClusterExtensionConfig {
684+ ConfigType : ocv1 .ClusterExtensionConfigTypeInline ,
685+ Inline : & apiextensionsv1.JSON {
686+ Raw : []byte (`{"deploymentConfig": {"env": [{"name": "TEST_ENV", "value": "test-value"}]}}` ),
687+ },
688+ },
689+ },
690+ })
691+ require .Error (t , err )
692+ require .Contains (t , err .Error (), "unknown field \" deploymentConfig\" " )
693+ require .ErrorIs (t , err , reconcile .TerminalError (nil ), "feature gate disabled error should be terminal" )
694+ })
695+
696+ t .Run ("returns terminal error when deploymentConfig is used with SingleOwnNamespace disabled and DeploymentConfig gate disabled" , func (t * testing.T ) {
697+ provider := applier.RegistryV1ManifestProvider {
698+ BundleRenderer : render.BundleRenderer {
699+ ResourceGenerators : []render.ResourceGenerator {
700+ func (rv1 * bundle.RegistryV1 , opts render.Options ) ([]client.Object , error ) {
701+ return nil , nil
702+ },
703+ },
704+ },
705+ IsSingleOwnNamespaceEnabled : false ,
706+ IsDeploymentConfigEnabled : false ,
707+ }
708+
709+ bundleFS := bundlefs .Builder ().WithPackageName ("test" ).
710+ WithCSV (clusterserviceversion .Builder ().WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces ).Build ()).Build ()
711+
712+ _ , err := provider .Get (bundleFS , & ocv1.ClusterExtension {
713+ Spec : ocv1.ClusterExtensionSpec {
714+ Namespace : "install-namespace" ,
715+ Config : & ocv1.ClusterExtensionConfig {
716+ ConfigType : ocv1 .ClusterExtensionConfigTypeInline ,
717+ Inline : & apiextensionsv1.JSON {
718+ Raw : []byte (`{"deploymentConfig": {"env": [{"name": "TEST_ENV", "value": "test-value"}]}}` ),
719+ },
720+ },
721+ },
722+ })
723+ require .Error (t , err )
724+ require .Contains (t , err .Error (), "unknown field \" deploymentConfig\" " )
725+ require .ErrorIs (t , err , reconcile .TerminalError (nil ), "config should not be silently ignored when both feature gates are disabled" )
726+ })
657727}
658728
659729func Test_RegistryV1HelmChartProvider_Integration (t * testing.T ) {
0 commit comments