@@ -42,136 +42,23 @@ func Test_BundleRenderer_ValidatesBundle(t *testing.T) {
42
42
require .Contains (t , err .Error (), "this bundle is invalid" )
43
43
}
44
44
45
- func Test_BundleRenderer_CreatesCorrectRenderOptions_WithDefaults (t * testing.T ) {
46
- const (
47
- expectedInstallNamespace = "install-namespace"
48
- )
45
+ func Test_BundleRenderer_CreatesCorrectDefaultOptions (t * testing.T ) {
46
+ expectedInstallNamespace := "install-namespace"
47
+ expectedTargetNamespaces := [] string { "" }
48
+ expectedUniqueNameGenerator := render . DefaultUniqueNameGenerator
49
49
50
- for _ , tc := range []struct {
51
- name string
52
- csv v1alpha1.ClusterServiceVersion
53
- validate func (t * testing.T , opts render.Options )
54
- expectedErrMsgFragment string
55
- }{
56
- {
57
- name : "sets install-namespace correctly" ,
58
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces )),
59
- validate : func (t * testing.T , opts render.Options ) {
50
+ renderer := render.BundleRenderer {
51
+ ResourceGenerators : []render.ResourceGenerator {
52
+ func (rv1 * bundle.RegistryV1 , opts render.Options ) ([]client.Object , error ) {
60
53
require .Equal (t , expectedInstallNamespace , opts .InstallNamespace )
54
+ require .Equal (t , expectedTargetNamespaces , opts .TargetNamespaces )
55
+ require .Equal (t , reflect .ValueOf (expectedUniqueNameGenerator ).Pointer (), reflect .ValueOf (render .DefaultUniqueNameGenerator ).Pointer (), "options has unexpected default unique name generator" )
56
+ return nil , nil
61
57
},
62
- }, {
63
- name : "uses DefaultUniqueNameGenerator by default" ,
64
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces )),
65
- validate : func (t * testing.T , opts render.Options ) {
66
- require .Equal (t , reflect .ValueOf (render .DefaultUniqueNameGenerator ).Pointer (), reflect .ValueOf (opts .UniqueNameGenerator ).Pointer (), "options has unexpected default unique name generator" )
67
- },
68
- }, {
69
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces]" ,
70
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces )),
71
- validate : func (t * testing.T , opts render.Options ) {
72
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
73
- },
74
- }, {
75
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, SingleNamespace]" ,
76
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeSingleNamespace )),
77
- validate : func (t * testing.T , opts render.Options ) {
78
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
79
- },
80
- }, {
81
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, OwnNamespace]" ,
82
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeOwnNamespace )),
83
- validate : func (t * testing.T , opts render.Options ) {
84
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
85
- },
86
- }, {
87
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, MultiNamespace]" ,
88
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeMultiNamespace )),
89
- validate : func (t * testing.T , opts render.Options ) {
90
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
91
- },
92
- }, {
93
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, OwnNamespace, SingleNamespace]" ,
94
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeOwnNamespace , v1alpha1 .InstallModeTypeSingleNamespace )),
95
- validate : func (t * testing.T , opts render.Options ) {
96
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
97
- },
98
- }, {
99
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, OwnNamespace, MultiNamespace]" ,
100
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeOwnNamespace , v1alpha1 .InstallModeTypeMultiNamespace )),
101
- validate : func (t * testing.T , opts render.Options ) {
102
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
103
- },
104
- }, {
105
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, SingleNamespace, MultiNamespace]" ,
106
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeSingleNamespace , v1alpha1 .InstallModeTypeMultiNamespace )),
107
- validate : func (t * testing.T , opts render.Options ) {
108
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
109
- },
110
- }, {
111
- name : "sets target namespaces to [corev1.NamespaceAll] by default if bundle supports install modes [AllNamespaces, SingleNamespace, OwnNamespace, MultiNamespace]" ,
112
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces , v1alpha1 .InstallModeTypeSingleNamespace , v1alpha1 .InstallModeTypeOwnNamespace , v1alpha1 .InstallModeTypeMultiNamespace )),
113
- validate : func (t * testing.T , opts render.Options ) {
114
- require .Equal (t , []string {corev1 .NamespaceAll }, opts .TargetNamespaces )
115
- },
116
- }, {
117
- name : "sets target namespaces to [install-namespace] by default if bundle supports install modes [OwnNamespace]" ,
118
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeOwnNamespace )),
119
- validate : func (t * testing.T , opts render.Options ) {
120
- require .Equal (t , []string {expectedInstallNamespace }, opts .TargetNamespaces )
121
- },
122
- }, {
123
- name : "sets target namespaces to [install-namespace] by default if bundle supports install modes [OwnNamespace, SingleNamespace]" ,
124
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeOwnNamespace , v1alpha1 .InstallModeTypeSingleNamespace )),
125
- validate : func (t * testing.T , opts render.Options ) {
126
- require .Equal (t , []string {expectedInstallNamespace }, opts .TargetNamespaces )
127
- },
128
- }, {
129
- name : "sets target namespaces to [install-namespace] by default if bundle supports install modes [OwnNamespace, MultiNamespace]" ,
130
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeOwnNamespace , v1alpha1 .InstallModeTypeMultiNamespace )),
131
- validate : func (t * testing.T , opts render.Options ) {
132
- require .Equal (t , []string {expectedInstallNamespace }, opts .TargetNamespaces )
133
- },
134
- }, {
135
- name : "sets target namespaces to [install-namespace] by default if bundle supports install modes [OwnNamespace, SingleNamespace, MultiNamespace]" ,
136
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeOwnNamespace , v1alpha1 .InstallModeTypeSingleNamespace , v1alpha1 .InstallModeTypeMultiNamespace )),
137
- validate : func (t * testing.T , opts render.Options ) {
138
- require .Equal (t , []string {expectedInstallNamespace }, opts .TargetNamespaces )
139
- },
140
- }, {
141
- name : "returns error if target namespaces is not set bundle supports install modes [SingleNamespace]" ,
142
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeSingleNamespace )),
143
- expectedErrMsgFragment : "exactly one target namespace must be specified" ,
144
- }, {
145
- name : "returns error if target namespaces is not set bundle supports install modes [MultiNamespace]" ,
146
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeMultiNamespace )),
147
- expectedErrMsgFragment : "at least one target namespace must be specified" ,
148
- }, {
149
- name : "returns error if target namespaces is not set bundle supports install modes [SingleNamespace, MultiNamespace]" ,
150
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeSingleNamespace , v1alpha1 .InstallModeTypeMultiNamespace )),
151
- expectedErrMsgFragment : "at least one target namespace must be specified" ,
152
58
},
153
- } {
154
- t .Run (tc .name , func (t * testing.T ) {
155
- renderer := render.BundleRenderer {
156
- ResourceGenerators : []render.ResourceGenerator {
157
- func (rv1 * bundle.RegistryV1 , opts render.Options ) ([]client.Object , error ) {
158
- tc .validate (t , opts )
159
- return nil , nil
160
- },
161
- },
162
- }
163
-
164
- _ , err := renderer .Render (bundle.RegistryV1 {
165
- CSV : tc .csv ,
166
- }, expectedInstallNamespace )
167
- if tc .expectedErrMsgFragment == "" {
168
- require .NoError (t , err )
169
- } else {
170
- require .Error (t , err )
171
- require .Contains (t , err .Error (), tc .expectedErrMsgFragment )
172
- }
173
- })
174
59
}
60
+
61
+ _ , _ = renderer .Render (bundle.RegistryV1 {}, expectedInstallNamespace )
175
62
}
176
63
177
64
func Test_BundleRenderer_ValidatesRenderOptions (t * testing.T ) {
@@ -183,13 +70,12 @@ func Test_BundleRenderer_ValidatesRenderOptions(t *testing.T) {
183
70
err error
184
71
}{
185
72
{
186
- name : "rejects empty targetNamespaces" ,
73
+ name : "accepts empty targetNamespaces (because it is ignored) " ,
187
74
installNamespace : "install-namespace" ,
188
75
csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeAllNamespaces )),
189
76
opts : []render.Option {
190
77
render .WithTargetNamespaces (),
191
78
},
192
- err : errors .New ("invalid option(s): invalid target namespaces []: at least one target namespace must be specified" ),
193
79
}, {
194
80
name : "rejects nil unique name generator" ,
195
81
installNamespace : "install-namespace" ,
@@ -267,20 +153,20 @@ func Test_BundleRenderer_ValidatesRenderOptions(t *testing.T) {
267
153
render .WithTargetNamespaces ("some-namespace" ),
268
154
},
269
155
}, {
270
- name : "rejects single namespace render if OwnNamespace install mode is unsupported and targets own namespace " ,
156
+ name : "accepts multi namespace render if MultiNamespace install mode is supported " ,
271
157
installNamespace : "install-namespace" ,
272
- csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeSingleNamespace )),
158
+ csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeMultiNamespace )),
273
159
opts : []render.Option {
274
- render .WithTargetNamespaces ("install-namespace " ),
160
+ render .WithTargetNamespaces ("n1" , "n2" , "n3 " ),
275
161
},
276
- err : errors .New ("invalid option(s): invalid target namespaces [install-namespace]: supported install modes [SingleNamespace] do not support targeting own namespace" ),
277
162
}, {
278
- name : "accepts multi namespace render if MultiNamespace install mode is supported" ,
163
+ name : "reject multi namespace render if OwnNamespace install mode is not supported and target namespaces include install namespace " ,
279
164
installNamespace : "install-namespace" ,
280
165
csv : MakeCSV (WithInstallModeSupportFor (v1alpha1 .InstallModeTypeMultiNamespace )),
281
166
opts : []render.Option {
282
- render .WithTargetNamespaces ("n1" , "n2" , "n3" ),
167
+ render .WithTargetNamespaces ("n1" , "n2" , "n3" , "install-namespace" ),
283
168
},
169
+ err : errors .New ("invalid option(s): invalid target namespaces [n1 n2 n3 install-namespace]: supported install modes [MultiNamespace] do not support targeting own namespace" ),
284
170
},
285
171
} {
286
172
t .Run (tc .name , func (t * testing.T ) {
0 commit comments