From fd4836d21a2594247beaaaba5b52c435cbb006a6 Mon Sep 17 00:00:00 2001 From: whoffler Date: Fri, 10 Oct 2025 13:45:40 +0100 Subject: [PATCH 1/2] ermutation tests --- tests/go.mod | 3 + tests/go.sum | 10 ++ tests/other_test.go | 257 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 270 insertions(+) diff --git a/tests/go.mod b/tests/go.mod index cf239c50..4b4baede 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -5,6 +5,7 @@ go 1.24.0 toolchain go1.25.3 require ( + github.com/IBM/go-sdk-core v1.1.0 github.com/gruntwork-io/terratest v0.51.0 github.com/stretchr/testify v1.11.1 github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper v1.60.15 @@ -29,6 +30,7 @@ require ( github.com/cloudflare/circl v1.6.1 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect github.com/ghodss/yaml v1.0.0 // indirect @@ -98,6 +100,7 @@ require ( golang.org/x/sys v0.37.0 // indirect golang.org/x/text v0.30.0 // indirect golang.org/x/tools v0.37.0 // indirect + gopkg.in/go-playground/validator.v9 v9.31.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 9d276d30..f6a55df3 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -6,6 +6,8 @@ github.com/IBM-Cloud/power-go-client v1.13.0 h1:TqxPlkJe0VkNdV9hYOD5NRepxEFhhyKX github.com/IBM-Cloud/power-go-client v1.13.0/go.mod h1:SpTK1ttW8bfMNUVQS8qOEuWn2KOkzaCLyzfze8MG1JE= github.com/IBM/cloud-databases-go-sdk v0.8.1 h1:ULQ5L8V/9z79/qS185LqbIK2LD4kMtk3Hdhp4lFMVcw= github.com/IBM/cloud-databases-go-sdk v0.8.1/go.mod h1:JYucI1PdwqbAd8XGdDAchxzxRP7bxOh1zUnseovHKsc= +github.com/IBM/go-sdk-core v1.1.0 h1:pV73lZqr9r1xKb3h08c1uNG3AphwoV5KzUzhS+pfEqY= +github.com/IBM/go-sdk-core v1.1.0/go.mod h1:2pcx9YWsIsZ3I7kH+1amiAkXvLTZtAq9kbxsfXilSoY= github.com/IBM/go-sdk-core/v5 v5.9.2/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE= github.com/IBM/go-sdk-core/v5 v5.21.0 h1:DUnYhvC4SoC8T84rx5omnhY3+xcQg/Whyoa3mDPIMkk= 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 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -106,9 +110,11 @@ github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3Bum github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= 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= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= 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 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= diff --git a/tests/other_test.go b/tests/other_test.go index 1e62fef2..70b46640 100644 --- a/tests/other_test.go +++ b/tests/other_test.go @@ -4,8 +4,11 @@ package test import ( "testing" + "github.com/IBM/go-sdk-core/core" "github.com/gruntwork-io/terratest/modules/terraform" "github.com/stretchr/testify/assert" + "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/cloudinfo" + "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testaddons" "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testhelper" "github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper/testschematic" ) @@ -192,3 +195,257 @@ func TestFSCloudInSchematic(t *testing.T) { err := options.RunSchematicTest() assert.Nil(t, err, "This should not have errored") } + +func TestAddonPermutations(t *testing.T) { + + testCases := []testaddons.AddonTestCase{ + { + Name: "no-addons", + Prefix: "no-addons", + Dependencies: []cloudinfo.AddonConfig{ + { + OfferingName: "deploy-arch-ibm-slz-vpc", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-account-infra-base", + OfferingFlavor: "resource-group-only", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-kms", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cos", + OfferingFlavor: "instance", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cloud-logs", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cloud-monitoring", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-activity-tracker", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-secrets-manager", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-scc-workload-protection", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + }, + }, + { + Name: "all-addons", + Prefix: "all-addons", + Dependencies: []cloudinfo.AddonConfig{ + { + OfferingName: "deploy-arch-ibm-slz-vpc", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-account-infra-base", + OfferingFlavor: "resource-group-only", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-kms", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-cos", + OfferingFlavor: "instance", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-cloud-logs", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-cloud-monitoring", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-activity-tracker", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-secrets-manager", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-scc-workload-protection", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + }, + }, + { + Name: "scc-with-appconfig-disabled", + Prefix: "scc-no-app", + Dependencies: []cloudinfo.AddonConfig{ + { + OfferingName: "deploy-arch-ibm-slz-vpc", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-account-infra-base", + OfferingFlavor: "resource-group-only", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-kms", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cos", + OfferingFlavor: "instance", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cloud-logs", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cloud-monitoring", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-activity-tracker", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-secrets-manager", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-scc-workload-protection", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-apprapp", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + }, + }, + { + Name: "observability-with-no-deps", + Prefix: "obs-no-dep", + Dependencies: []cloudinfo.AddonConfig{ + { + OfferingName: "deploy-arch-ibm-slz-vpc", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-account-infra-base", + OfferingFlavor: "resource-group-only", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-kms", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cos", + OfferingFlavor: "instance", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-cloud-logs", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-cloud-monitoring", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-activity-tracker", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(true), + }, + { + OfferingName: "deploy-arch-ibm-secrets-manager", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-scc-workload-protection", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + { + OfferingName: "deploy-arch-ibm-event-notifications", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + }, + }, + } + + baseOptions := testaddons.TestAddonsOptionsDefault(&testaddons.TestAddonOptions{ + Testing: t, + Prefix: "adv-matrix", + ResourceGroup: resourceGroup, + QuietMode: true, + DeployTimeoutMinutes: 240, + }) + + matrix := testaddons.AddonTestMatrix{ + BaseOptions: baseOptions, + TestCases: testCases, + BaseSetupFunc: func(baseOptions *testaddons.TestAddonOptions, testCase testaddons.AddonTestCase) *testaddons.TestAddonOptions { + return testaddons.TestAddonsOptionsDefault(&testaddons.TestAddonOptions{ + Testing: t, + Prefix: testCase.Prefix, + ResourceGroup: resourceGroup, + VerboseOnFailure: true, + }) + }, + AddonConfigFunc: func(options *testaddons.TestAddonOptions, testCase testaddons.AddonTestCase) cloudinfo.AddonConfig { + return cloudinfo.NewAddonConfigTerraform( + options.Prefix, + "deploy-arch-ibm-slz-ocp", + "fully-configurable", + map[string]interface{}{ + "prefix": options.Prefix, + "region": "us-south", + }, + ) + }, + } + + baseOptions.RunAddonTestMatrix(matrix) +} From a49b46aa83d0a8f7f2c698ba5c8a53057c308cc1 Mon Sep 17 00:00:00 2001 From: whoffler Date: Tue, 21 Oct 2025 10:45:07 +0100 Subject: [PATCH 2/2] update --- tests/other_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/other_test.go b/tests/other_test.go index 70b46640..fd6b48f4 100644 --- a/tests/other_test.go +++ b/tests/other_test.go @@ -206,7 +206,7 @@ func TestAddonPermutations(t *testing.T) { { OfferingName: "deploy-arch-ibm-slz-vpc", OfferingFlavor: "fully-configurable", - Enabled: core.BoolPtr(false), + Enabled: core.BoolPtr(true), // required addon }, { OfferingName: "deploy-arch-ibm-account-infra-base", @@ -221,7 +221,7 @@ func TestAddonPermutations(t *testing.T) { { OfferingName: "deploy-arch-ibm-cos", OfferingFlavor: "instance", - Enabled: core.BoolPtr(false), + Enabled: core.BoolPtr(true), // required addon }, { OfferingName: "deploy-arch-ibm-cloud-logs", @@ -308,7 +308,7 @@ func TestAddonPermutations(t *testing.T) { { OfferingName: "deploy-arch-ibm-slz-vpc", OfferingFlavor: "fully-configurable", - Enabled: core.BoolPtr(false), + Enabled: core.BoolPtr(true), // required addon }, { OfferingName: "deploy-arch-ibm-account-infra-base", @@ -323,7 +323,7 @@ func TestAddonPermutations(t *testing.T) { { OfferingName: "deploy-arch-ibm-cos", OfferingFlavor: "instance", - Enabled: core.BoolPtr(false), + Enabled: core.BoolPtr(true), // required addon }, { OfferingName: "deploy-arch-ibm-cloud-logs", @@ -364,7 +364,7 @@ func TestAddonPermutations(t *testing.T) { { OfferingName: "deploy-arch-ibm-slz-vpc", OfferingFlavor: "fully-configurable", - Enabled: core.BoolPtr(false), + Enabled: core.BoolPtr(true), // required addon }, { OfferingName: "deploy-arch-ibm-account-infra-base", @@ -379,7 +379,7 @@ func TestAddonPermutations(t *testing.T) { { OfferingName: "deploy-arch-ibm-cos", OfferingFlavor: "instance", - Enabled: core.BoolPtr(false), + Enabled: core.BoolPtr(true), // required addon }, { OfferingName: "deploy-arch-ibm-cloud-logs",