@@ -360,6 +360,86 @@ func TestCloudGuardDetectorRecipeResource_basic(t *testing.T) {
360360 })
361361}
362362
363+ func TestCloudGuardDetectorRecipeResource_updateOptionalParamsWithoutDestroy (t * testing.T ) {
364+ httpreplay .SetScenario ("TestCloudGuardDetectorRecipeResource_basic" )
365+ defer httpreplay .SaveScenario ()
366+
367+ config := acctest .ProviderTestConfig ()
368+
369+ compartmentId := utils .GetEnvSettingWithBlankDefault ("compartment_ocid" )
370+ compartmentIdVariableStr := fmt .Sprintf ("variable \" compartment_id\" { default = \" %s\" }\n " , compartmentId )
371+
372+ resourceName := "oci_cloud_guard_detector_recipe.test_detector_recipe"
373+ var resId string
374+ // Save TF content to Create resource with optional properties. This has to be exactly the same as the config part in the "Create with optionals" step in the test.
375+ acctest .SaveConfigContent (config + compartmentIdVariableStr + CloudGuardDetectorRecipeResourceDependencies +
376+ acctest .GenerateResourceFromRepresentationMap ("oci_cloud_guard_detector_recipe" , "test_detector_recipe" , acctest .Optional , acctest .Create , CloudGuardDetectorRecipeRepresentation ), "cloudguard" , "detectorRecipe" , t )
377+
378+ acctest .ResourceTest (t , testAccCheckCloudGuardDetectorRecipeDestroy , []resource.TestStep {
379+ // verify Create Recipe
380+ {
381+ Config : config + compartmentIdVariableStr + CloudGuardDetectorRecipeResourceDependencies +
382+ acctest .GenerateResourceFromRepresentationMap ("oci_cloud_guard_detector_recipe" , "test_detector_recipe" , acctest .Required , acctest .Create , CloudGuardDetectorRecipeRepresentation ),
383+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
384+ resource .TestCheckResourceAttr (resourceName , "compartment_id" , compartmentId ),
385+ resource .TestCheckResourceAttr (resourceName , "display_name" , "displayName" ),
386+ resource .TestCheckResourceAttrSet (resourceName , "source_detector_recipe_id" ),
387+
388+ func (s * terraform.State ) (err error ) {
389+ resId , err = acctest .FromInstanceState (s , resourceName , "id" )
390+ return err
391+ },
392+ ),
393+ },
394+ // verify Create with optionals
395+ {
396+ Config : config + compartmentIdVariableStr + CloudGuardDetectorRecipeResourceDependencies +
397+ acctest .GenerateResourceFromRepresentationMap ("oci_cloud_guard_detector_recipe" , "test_detector_recipe" , acctest .Optional , acctest .Create , CloudGuardDetectorRecipeRepresentation ),
398+ Check : acctest .ComposeAggregateTestCheckFuncWrapper (
399+ resource .TestCheckResourceAttr (resourceName , "compartment_id" , compartmentId ),
400+ resource .TestCheckResourceAttr (resourceName , "description" , "description" ),
401+ resource .TestCheckResourceAttr (resourceName , "detector" , "IAAS_CONFIGURATION_DETECTOR" ),
402+ resource .TestCheckResourceAttr (resourceName , "detector_rules.#" , "1" ),
403+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.#" , "1" ),
404+ //Just checking it being set, it being a JSON
405+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.condition" , "{\" kind\" :\" SIMPLE\" ,\" parameter\" :\" lbCertificateExpiringSoonFilter\" ,\" value\" :\" 10\" ,\" operator\" :\" EQUALS\" ,\" valueType\" :\" CUSTOM\" }" ),
406+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.configurations.#" , "1" ),
407+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.configurations.0.config_key" , "lbCertificateExpiringSoonConfig" ),
408+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.configurations.0.data_type" , "int" ),
409+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.configurations.0.name" , "Days before expiring" ),
410+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.configurations.0.value" , "30" ),
411+ // Configuration values will be set only if data_type is complex such as multiList
412+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.configurations.0.values.#" , "0" ),
413+ //resource.TestCheckResourceAttr(resourceName, "detector_rules.0.details.0.configurations.0.values.0.list_type", "CUSTOM"),
414+ //resource.TestCheckResourceAttr(resourceName, "detector_rules.0.details.0.configurations.0.values.0.managed_list_type", "RESOURCE_OCID"),
415+ //resource.TestCheckResourceAttr(resourceName, "detector_rules.0.details.0.configurations.0.values.0.value", "resourceOcid1"),
416+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.is_enabled" , "false" ),
417+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.labels.#" , "1" ),
418+ resource .TestCheckResourceAttr (resourceName , "detector_rules.0.details.0.risk_level" , "CRITICAL" ),
419+ resource .TestCheckResourceAttrSet (resourceName , "detector_rules.0.detector" ),
420+ resource .TestCheckResourceAttrSet (resourceName , "detector_rules.0.detector_rule_id" ),
421+ resource .TestCheckResourceAttrSet (resourceName , "detector_rules.0.resource_type" ),
422+ resource .TestCheckResourceAttrSet (resourceName , "detector_rules.0.service_type" ),
423+ resource .TestCheckResourceAttr (resourceName , "display_name" , "displayName" ),
424+ resource .TestCheckResourceAttr (resourceName , "freeform_tags.%" , "1" ),
425+ resource .TestCheckResourceAttrSet (resourceName , "id" ),
426+ resource .TestCheckResourceAttrSet (resourceName , "owner" ),
427+ resource .TestCheckResourceAttrSet (resourceName , "source_detector_recipe_id" ),
428+
429+ func (s * terraform.State ) (err error ) {
430+ resId , err = acctest .FromInstanceState (s , resourceName , "id" )
431+ if isEnableExportCompartment , _ := strconv .ParseBool (utils .GetEnvSettingWithDefault ("enable_export_compartment" , "true" )); isEnableExportCompartment {
432+ if errExport := resourcediscovery .TestExportCompartmentWithResourceName (& resId , & compartmentId , resourceName ); errExport != nil {
433+ return errExport
434+ }
435+ }
436+ return err
437+ },
438+ ),
439+ },
440+ })
441+ }
442+
363443func testAccCheckCloudGuardDetectorRecipeDestroy (s * terraform.State ) error {
364444 noResourceFound := true
365445 client := acctest .TestAccProvider .Meta ().(* tf_client.OracleClients ).CloudGuardClient ()
0 commit comments