@@ -4,8 +4,11 @@ package test
44import (
55 "testing"
66
7+ "github.com/IBM/go-sdk-core/core"
78 "github.com/gruntwork-io/terratest/modules/terraform"
89 "github.com/stretchr/testify/assert"
10+ "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/cloudinfo"
11+ "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testaddons"
912 "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testhelper"
1013 "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testschematic"
1114)
@@ -192,3 +195,181 @@ func TestFSCloudInSchematic(t *testing.T) {
192195 err := options .RunSchematicTest ()
193196 assert .Nil (t , err , "This should not have errored" )
194197}
198+
199+ func TestAddonPermutations (t * testing.T ) {
200+ testCases := []testaddons.AddonTestCase {
201+ {
202+ Name : "no-addons" ,
203+ Prefix : "no-addons" ,
204+ Dependencies : []cloudinfo.AddonConfig {
205+ {
206+ OfferingName : "deploy-arch-ibm-slz-vpc" ,
207+ OfferingFlavor : "fully-configurable" ,
208+ Enabled : core .BoolPtr (true ), // required addon
209+ },
210+ {
211+ OfferingName : "deploy-arch-ibm-kms" ,
212+ OfferingFlavor : "fully-configurable" ,
213+ Enabled : core .BoolPtr (false ),
214+ },
215+ {
216+ OfferingName : "deploy-arch-ibm-cos" ,
217+ OfferingFlavor : "instance" ,
218+ Enabled : core .BoolPtr (true ), // required addon
219+ },
220+ {
221+ OfferingName : "deploy-arch-ibm-cloud-logs" ,
222+ OfferingFlavor : "fully-configurable" ,
223+ Enabled : core .BoolPtr (false ),
224+ },
225+ {
226+ OfferingName : "deploy-arch-ibm-cloud-monitoring" ,
227+ OfferingFlavor : "fully-configurable" ,
228+ Enabled : core .BoolPtr (false ),
229+ },
230+ {
231+ OfferingName : "deploy-arch-ibm-activity-tracker" ,
232+ OfferingFlavor : "fully-configurable" ,
233+ Enabled : core .BoolPtr (false ),
234+ },
235+ {
236+ OfferingName : "deploy-arch-ibm-secrets-manager" ,
237+ OfferingFlavor : "fully-configurable" ,
238+ Enabled : core .BoolPtr (false ),
239+ },
240+ {
241+ OfferingName : "deploy-arch-ibm-scc-workload-protection" ,
242+ OfferingFlavor : "fully-configurable" ,
243+ Enabled : core .BoolPtr (false ),
244+ },
245+ },
246+ },
247+ {
248+ Name : "all-addons" ,
249+ Prefix : "all-addons" ,
250+ Dependencies : []cloudinfo.AddonConfig {
251+ {
252+ OfferingName : "deploy-arch-ibm-slz-vpc" ,
253+ OfferingFlavor : "fully-configurable" ,
254+ Enabled : core .BoolPtr (true ),
255+ },
256+ {
257+ OfferingName : "deploy-arch-ibm-kms" ,
258+ OfferingFlavor : "fully-configurable" ,
259+ Enabled : core .BoolPtr (true ),
260+ },
261+ {
262+ OfferingName : "deploy-arch-ibm-cos" ,
263+ OfferingFlavor : "instance" ,
264+ Enabled : core .BoolPtr (true ),
265+ },
266+ {
267+ OfferingName : "deploy-arch-ibm-cloud-logs" ,
268+ OfferingFlavor : "fully-configurable" ,
269+ Enabled : core .BoolPtr (true ),
270+ },
271+ {
272+ OfferingName : "deploy-arch-ibm-cloud-monitoring" ,
273+ OfferingFlavor : "fully-configurable" ,
274+ Enabled : core .BoolPtr (true ),
275+ },
276+ {
277+ OfferingName : "deploy-arch-ibm-activity-tracker" ,
278+ OfferingFlavor : "fully-configurable" ,
279+ Enabled : core .BoolPtr (true ),
280+ },
281+ {
282+ OfferingName : "deploy-arch-ibm-secrets-manager" ,
283+ OfferingFlavor : "fully-configurable" ,
284+ Enabled : core .BoolPtr (true ),
285+ },
286+ {
287+ OfferingName : "deploy-arch-ibm-scc-workload-protection" ,
288+ OfferingFlavor : "fully-configurable" ,
289+ Enabled : core .BoolPtr (true ),
290+ },
291+ },
292+ },
293+ {
294+ Name : "observability-with-no-deps" ,
295+ Prefix : "obs-no-dep" ,
296+ Dependencies : []cloudinfo.AddonConfig {
297+ {
298+ OfferingName : "deploy-arch-ibm-slz-vpc" ,
299+ OfferingFlavor : "fully-configurable" ,
300+ Enabled : core .BoolPtr (true ), // required addon
301+ },
302+ {
303+ OfferingName : "deploy-arch-ibm-kms" ,
304+ OfferingFlavor : "fully-configurable" ,
305+ Enabled : core .BoolPtr (false ),
306+ },
307+ {
308+ OfferingName : "deploy-arch-ibm-cos" ,
309+ OfferingFlavor : "instance" ,
310+ Enabled : core .BoolPtr (true ), // required addon
311+ },
312+ {
313+ OfferingName : "deploy-arch-ibm-cloud-logs" ,
314+ OfferingFlavor : "fully-configurable" ,
315+ Enabled : core .BoolPtr (true ),
316+ },
317+ {
318+ OfferingName : "deploy-arch-ibm-cloud-monitoring" ,
319+ OfferingFlavor : "fully-configurable" ,
320+ Enabled : core .BoolPtr (true ),
321+ },
322+ {
323+ OfferingName : "deploy-arch-ibm-activity-tracker" ,
324+ OfferingFlavor : "fully-configurable" ,
325+ Enabled : core .BoolPtr (true ),
326+ },
327+ {
328+ OfferingName : "deploy-arch-ibm-secrets-manager" ,
329+ OfferingFlavor : "fully-configurable" ,
330+ Enabled : core .BoolPtr (false ),
331+ },
332+ {
333+ OfferingName : "deploy-arch-ibm-scc-workload-protection" ,
334+ OfferingFlavor : "fully-configurable" ,
335+ Enabled : core .BoolPtr (false ),
336+ },
337+ {
338+ OfferingName : "deploy-arch-ibm-event-notifications" ,
339+ OfferingFlavor : "fully-configurable" ,
340+ Enabled : core .BoolPtr (false ),
341+ },
342+ },
343+ },
344+ }
345+
346+ baseOptions := testaddons .TestAddonsOptionsDefault (& testaddons.TestAddonOptions {
347+ Testing : t ,
348+ ResourceGroup : resourceGroup ,
349+ QuietMode : true ,
350+ DeployTimeoutMinutes : 240 ,
351+ })
352+
353+ matrix := testaddons.AddonTestMatrix {
354+ BaseOptions : baseOptions ,
355+ TestCases : testCases ,
356+ BaseSetupFunc : func (baseOptions * testaddons.TestAddonOptions , testCase testaddons.AddonTestCase ) * testaddons.TestAddonOptions {
357+ return testaddons .TestAddonsOptionsDefault (& testaddons.TestAddonOptions {
358+ Testing : t ,
359+ Prefix : testCase .Prefix ,
360+ ResourceGroup : resourceGroup ,
361+ VerboseOnFailure : true ,
362+ })
363+ },
364+ AddonConfigFunc : func (options * testaddons.TestAddonOptions , testCase testaddons.AddonTestCase ) cloudinfo.AddonConfig {
365+ return cloudinfo .NewAddonConfigTerraform (
366+ options .Prefix ,
367+ "deploy-arch-ibm-slz-ocp" ,
368+ "fully-configurable" ,
369+ map [string ]interface {}{},
370+ )
371+ },
372+ }
373+
374+ baseOptions .RunAddonTestMatrix (matrix )
375+ }
0 commit comments