Skip to content

Commit 9662f6c

Browse files
committed
Add minimal query rule test case
1 parent 75cade8 commit 9662f6c

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

internal/kibana/security_detection_rule/acc_test.go

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
38784013
func testAccSecurityDetectionRuleConfig_queryRemoveFilters(name string) string {
38794014
return fmt.Sprintf(`
38804015
provider "elasticstack" {

0 commit comments

Comments
 (0)