Skip to content

Commit 612495f

Browse files
authored
test: permutation tests (#816)
1 parent a4bf968 commit 612495f

3 files changed

Lines changed: 194 additions & 0 deletions

File tree

tests/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.24.0
55
toolchain go1.25.3
66

77
require (
8+
github.com/IBM/go-sdk-core v1.1.0
89
github.com/gruntwork-io/terratest v0.51.0
910
github.com/stretchr/testify v1.11.1
1011
github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.17
@@ -29,6 +30,7 @@ require (
2930
github.com/cloudflare/circl v1.6.1 // indirect
3031
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
3132
github.com/davecgh/go-spew v1.1.1 // indirect
33+
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
3234
github.com/emirpasic/gods v1.18.1 // indirect
3335
github.com/gabriel-vasile/mimetype v1.4.9 // indirect
3436
github.com/ghodss/yaml v1.0.0 // indirect
@@ -98,6 +100,7 @@ require (
98100
golang.org/x/sys v0.37.0 // indirect
99101
golang.org/x/text v0.30.0 // indirect
100102
golang.org/x/tools v0.37.0 // indirect
103+
gopkg.in/go-playground/validator.v9 v9.31.0 // indirect
101104
gopkg.in/warnings.v0 v0.1.2 // indirect
102105
gopkg.in/yaml.v2 v2.4.0 // indirect
103106
gopkg.in/yaml.v3 v3.0.1 // indirect

tests/go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ github.com/IBM-Cloud/power-go-client v1.13.0 h1:TqxPlkJe0VkNdV9hYOD5NRepxEFhhyKX
66
github.com/IBM-Cloud/power-go-client v1.13.0/go.mod h1:SpTK1ttW8bfMNUVQS8qOEuWn2KOkzaCLyzfze8MG1JE=
77
github.com/IBM/cloud-databases-go-sdk v0.8.1 h1:ULQ5L8V/9z79/qS185LqbIK2LD4kMtk3Hdhp4lFMVcw=
88
github.com/IBM/cloud-databases-go-sdk v0.8.1/go.mod h1:JYucI1PdwqbAd8XGdDAchxzxRP7bxOh1zUnseovHKsc=
9+
github.com/IBM/go-sdk-core v1.1.0 h1:pV73lZqr9r1xKb3h08c1uNG3AphwoV5KzUzhS+pfEqY=
10+
github.com/IBM/go-sdk-core v1.1.0/go.mod h1:2pcx9YWsIsZ3I7kH+1amiAkXvLTZtAq9kbxsfXilSoY=
911
github.com/IBM/go-sdk-core/v5 v5.9.2/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE=
1012
github.com/IBM/go-sdk-core/v5 v5.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk=
1113
github.com/IBM/go-sdk-core/v5 v5.21.0/go.mod h1:Q3BYO6iDA2zweQPDGbNTtqft5tDcEpm6RTuqMlPcvbw=
@@ -48,6 +50,8 @@ github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGL
4850
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4951
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5052
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
53+
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
54+
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
5155
github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=
5256
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
5357
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
@@ -106,9 +110,11 @@ github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3Bum
106110
github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ=
107111
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
108112
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
113+
github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM=
109114
github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
110115
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
111116
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
117+
github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY=
112118
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
113119
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
114120
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
@@ -195,6 +201,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
195201
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
196202
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
197203
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
204+
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
198205
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
199206
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
200207
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
@@ -512,7 +519,10 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
512519
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
513520
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
514521
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
522+
gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=
515523
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
524+
gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
525+
gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M=
516526
gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
517527
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
518528
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=

tests/other_test.go

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ package test
44
import (
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

Comments
 (0)