@@ -3875,6 +3875,141 @@ resource "elasticstack_kibana_security_detection_rule" "test" {
38753875` , name )
38763876}
38773877
3878+ func TestAccResourceSecurityDetectionRule_QueryMinimal (t * testing.T ) {
3879+ resourceName := "elasticstack_kibana_security_detection_rule.test"
3880+
3881+ resource .Test (t , resource.TestCase {
3882+ PreCheck : func () { acctest .PreCheck (t ) },
3883+ ProtoV6ProviderFactories : acctest .Providers ,
3884+ CheckDestroy : testAccCheckSecurityDetectionRuleDestroy ,
3885+ Steps : []resource.TestStep {
3886+ {
3887+ SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionSupport ),
3888+ Config : testAccSecurityDetectionRuleConfig_queryMinimal ("test-query-rule-minimal" ),
3889+ Check : resource .ComposeTestCheckFunc (
3890+ resource .TestCheckResourceAttr (resourceName , "name" , "test-query-rule-minimal" ),
3891+ resource .TestCheckResourceAttr (resourceName , "type" , "query" ),
3892+ resource .TestCheckResourceAttr (resourceName , "query" , "*:*" ),
3893+ resource .TestCheckResourceAttr (resourceName , "language" , "kuery" ),
3894+ resource .TestCheckResourceAttr (resourceName , "enabled" , "true" ),
3895+ resource .TestCheckResourceAttr (resourceName , "description" , "Minimal test query security detection rule" ),
3896+ resource .TestCheckResourceAttr (resourceName , "severity" , "low" ),
3897+ resource .TestCheckResourceAttr (resourceName , "risk_score" , "21" ),
3898+ resource .TestCheckResourceAttr (resourceName , "index.0" , "logs-*" ),
3899+
3900+ // Verify only required fields are set
3901+ resource .TestCheckResourceAttrSet (resourceName , "id" ),
3902+ resource .TestCheckResourceAttrSet (resourceName , "rule_id" ),
3903+ resource .TestCheckResourceAttrSet (resourceName , "created_at" ),
3904+ resource .TestCheckResourceAttrSet (resourceName , "created_by" ),
3905+
3906+ // Verify optional fields are not set
3907+ resource .TestCheckNoResourceAttr (resourceName , "data_view_id" ),
3908+ resource .TestCheckNoResourceAttr (resourceName , "namespace" ),
3909+ resource .TestCheckNoResourceAttr (resourceName , "rule_name_override" ),
3910+ resource .TestCheckNoResourceAttr (resourceName , "timestamp_override" ),
3911+ resource .TestCheckNoResourceAttr (resourceName , "timestamp_override_fallback_disabled" ),
3912+ resource .TestCheckNoResourceAttr (resourceName , "meta" ),
3913+ resource .TestCheckNoResourceAttr (resourceName , "filters" ),
3914+ resource .TestCheckNoResourceAttr (resourceName , "investigation_fields" ),
3915+ resource .TestCheckNoResourceAttr (resourceName , "risk_score_mapping" ),
3916+ resource .TestCheckNoResourceAttr (resourceName , "related_integrations" ),
3917+ resource .TestCheckNoResourceAttr (resourceName , "required_fields" ),
3918+ resource .TestCheckNoResourceAttr (resourceName , "severity_mapping" ),
3919+ resource .TestCheckNoResourceAttr (resourceName , "response_actions" ),
3920+ resource .TestCheckNoResourceAttr (resourceName , "alert_suppression" ),
3921+ resource .TestCheckNoResourceAttr (resourceName , "building_block_type" ),
3922+ ),
3923+ },
3924+ {
3925+ SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionSupport ),
3926+ Config : testAccSecurityDetectionRuleConfig_queryMinimalUpdate ("test-query-rule-minimal-updated" ),
3927+ Check : resource .ComposeTestCheckFunc (
3928+ resource .TestCheckResourceAttr (resourceName , "name" , "test-query-rule-minimal-updated" ),
3929+ resource .TestCheckResourceAttr (resourceName , "type" , "query" ),
3930+ resource .TestCheckResourceAttr (resourceName , "query" , "event.category:authentication" ),
3931+ resource .TestCheckResourceAttr (resourceName , "language" , "kuery" ),
3932+ resource .TestCheckResourceAttr (resourceName , "enabled" , "false" ),
3933+ resource .TestCheckResourceAttr (resourceName , "description" , "Updated minimal test query security detection rule" ),
3934+ resource .TestCheckResourceAttr (resourceName , "severity" , "medium" ),
3935+ resource .TestCheckResourceAttr (resourceName , "risk_score" , "55" ),
3936+ resource .TestCheckResourceAttr (resourceName , "index.0" , "logs-*" ),
3937+ resource .TestCheckResourceAttr (resourceName , "index.1" , "winlogbeat-*" ),
3938+
3939+ // Verify required fields are still set
3940+ resource .TestCheckResourceAttrSet (resourceName , "id" ),
3941+ resource .TestCheckResourceAttrSet (resourceName , "rule_id" ),
3942+ resource .TestCheckResourceAttrSet (resourceName , "created_at" ),
3943+ resource .TestCheckResourceAttrSet (resourceName , "created_by" ),
3944+
3945+ // Verify optional fields are still not set
3946+ resource .TestCheckNoResourceAttr (resourceName , "data_view_id" ),
3947+ resource .TestCheckNoResourceAttr (resourceName , "namespace" ),
3948+ resource .TestCheckNoResourceAttr (resourceName , "rule_name_override" ),
3949+ resource .TestCheckNoResourceAttr (resourceName , "timestamp_override" ),
3950+ resource .TestCheckNoResourceAttr (resourceName , "timestamp_override_fallback_disabled" ),
3951+ resource .TestCheckNoResourceAttr (resourceName , "meta" ),
3952+ resource .TestCheckNoResourceAttr (resourceName , "filters" ),
3953+ resource .TestCheckNoResourceAttr (resourceName , "investigation_fields" ),
3954+ resource .TestCheckNoResourceAttr (resourceName , "risk_score_mapping" ),
3955+ resource .TestCheckNoResourceAttr (resourceName , "related_integrations" ),
3956+ resource .TestCheckNoResourceAttr (resourceName , "required_fields" ),
3957+ resource .TestCheckNoResourceAttr (resourceName , "severity_mapping" ),
3958+ resource .TestCheckNoResourceAttr (resourceName , "response_actions" ),
3959+ resource .TestCheckNoResourceAttr (resourceName , "alert_suppression" ),
3960+ resource .TestCheckNoResourceAttr (resourceName , "building_block_type" ),
3961+ ),
3962+ },
3963+ },
3964+ })
3965+ }
3966+
3967+ func testAccSecurityDetectionRuleConfig_queryMinimal (name string ) string {
3968+ return fmt .Sprintf (`
3969+ provider "elasticstack" {
3970+ kibana {}
3971+ }
3972+
3973+ resource "elasticstack_kibana_security_detection_rule" "test" {
3974+ name = "%s"
3975+ type = "query"
3976+ query = "*:*"
3977+ language = "kuery"
3978+ enabled = true
3979+ description = "Minimal test query security detection rule"
3980+ severity = "low"
3981+ risk_score = 21
3982+ from = "now-6m"
3983+ to = "now"
3984+ interval = "5m"
3985+ index = ["logs-*"]
3986+ }
3987+ ` , name )
3988+ }
3989+
3990+ func testAccSecurityDetectionRuleConfig_queryMinimalUpdate (name string ) string {
3991+ return fmt .Sprintf (`
3992+ provider "elasticstack" {
3993+ kibana {}
3994+ }
3995+
3996+ resource "elasticstack_kibana_security_detection_rule" "test" {
3997+ name = "%s"
3998+ type = "query"
3999+ query = "event.category:authentication"
4000+ language = "kuery"
4001+ enabled = false
4002+ description = "Updated minimal test query security detection rule"
4003+ severity = "medium"
4004+ risk_score = 55
4005+ from = "now-12m"
4006+ to = "now"
4007+ interval = "10m"
4008+ index = ["logs-*", "winlogbeat-*"]
4009+ }
4010+ ` , name )
4011+ }
4012+
38784013func testAccSecurityDetectionRuleConfig_queryRemoveFilters (name string ) string {
38794014 return fmt .Sprintf (`
38804015provider "elasticstack" {
0 commit comments