diff --git a/.secrets.baseline b/.secrets.baseline index 628cbbac..8f99e7de 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -3,7 +3,7 @@ "files": "go.sum|^.secrets.baseline$", "lines": null }, - "generated_at": "2024-08-29T15:52:08Z", + "generated_at": "2025-10-06T09:14:40Z", "plugins_used": [ { "name": "AWSKeyDetector" @@ -77,7 +77,7 @@ } ], "results": {}, - "version": "0.13.1+ibm.62.dss", + "version": "0.13.1+ibm.64.dss", "word_list": { "file": null, "hash": null diff --git a/tests/other_test.go b/tests/other_test.go index 7351cdb8..7d44838e 100644 --- a/tests/other_test.go +++ b/tests/other_test.go @@ -4,6 +4,9 @@ package test import ( "testing" + "github.com/IBM/go-sdk-core/v5/core" + "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/stretchr/testify/assert" @@ -53,3 +56,198 @@ func TestRunCustomSecurityGroupExample(t *testing.T) { assert.Nil(t, err, "This should not have errored") assert.NotNil(t, output, "Expected some output") } + +func TestAddonPermutations(t *testing.T) { + t.Parallel() + + testCases := []testaddons.AddonTestCase{ + { + Name: "no-addons", + Prefix: "no-addons", + Dependencies: []cloudinfo.AddonConfig{ + { + 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-scc-workload-protection", + OfferingFlavor: "fully-configurable", + Enabled: core.BoolPtr(false), + }, + }, + }, + { + Name: "all-addons", + Prefix: "all-addons", + Dependencies: []cloudinfo.AddonConfig{ + { + 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-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-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-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-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-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-vpc", + "fully-configurable", + map[string]interface{}{ + "prefix": options.Prefix, + "region": "us-south", + }, + ) + }, + } + + baseOptions.RunAddonTestMatrix(matrix) +}