@@ -20,7 +20,10 @@ import (
2020 "github.com/stretchr/testify/require"
2121)
2222
23- var minVersionIntegrationPolicy = version .Must (version .NewVersion ("8.10.0" ))
23+ var (
24+ minVersionIntegrationPolicy = version .Must (version .NewVersion ("8.10.0" ))
25+ minVersionSqlIntegration = version .Must (version .NewVersion ("9.1.0" ))
26+ )
2427
2528func TestJsonTypes (t * testing.T ) {
2629 mapBytes , err := json .Marshal (map [string ]string {})
@@ -127,53 +130,92 @@ func TestAccResourceIntegrationPolicySecretsFromSDK(t *testing.T) {
127130func TestAccResourceIntegrationPolicySecrets (t * testing.T ) {
128131 policyName := sdkacctest .RandStringFromCharSet (22 , sdkacctest .CharSetAlphaNum )
129132
130- resource .Test (t , resource.TestCase {
131- PreCheck : func () { acctest .PreCheck (t ) },
132- CheckDestroy : checkResourceIntegrationPolicyDestroy ,
133- ProtoV6ProviderFactories : acctest .Providers ,
134- Steps : []resource.TestStep {
135- {
136- SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionIntegrationPolicy ),
137- Config : testAccResourceIntegrationPolicySecretsCreate (policyName , "created" ),
138- Check : resource .ComposeTestCheckFunc (
139- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "name" , policyName ),
140- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "description" , "IntegrationPolicyTest Policy" ),
141- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_name" , "aws_logs" ),
142- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_version" , "1.4.0" ),
143- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "vars_json" , fmt .Sprintf (`{"access_key_id":"placeholder","default_region":"us-east-1","endpoint":"endpoint","secret_access_key":"created %s","session_token":"placeholder"}` , policyName )),
144- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.input_id" , "aws_logs-aws-cloudwatch" ),
145- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.enabled" , "true" ),
146- resource .TestCheckNoResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.vars_json" ),
147- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.streams_json" , `{"aws_logs.generic":{"enabled":true,"vars":{"api_sleep":"200ms","api_timeput":"120s","custom":"","data_stream.dataset":"aws_logs.generic","log_streams":[],"number_of_workers":1,"preserve_original_event":false,"scan_frequency":"1m","start_position":"beginning","tags":["forwarded"]}}}` ),
148- ),
149- },
150- {
151- SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionIntegrationPolicy ),
152- Config : testAccResourceIntegrationPolicySecretsUpdate (policyName , "updated" ),
153- Check : resource .ComposeTestCheckFunc (
154- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "name" , policyName ),
155- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "description" , "Updated Integration Policy" ),
156- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_name" , "aws_logs" ),
157- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_version" , "1.4.0" ),
158- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "vars_json" , fmt .Sprintf (`{"access_key_id":"placeholder","default_region":"us-east-2","endpoint":"endpoint","secret_access_key":"updated %s","session_token":"placeholder"}` , policyName )),
159- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.input_id" , "aws_logs-aws-cloudwatch" ),
160- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.enabled" , "false" ),
161- resource .TestCheckNoResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.vars_json" ),
162- resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.streams_json" , `{"aws_logs.generic":{"enabled":false,"vars":{"api_sleep":"200ms","api_timeput":"120s","custom":"","data_stream.dataset":"aws_logs.generic","log_streams":[],"number_of_workers":1,"preserve_original_event":false,"scan_frequency":"2m","start_position":"beginning","tags":["forwarded"]}}}` ),
163- ),
133+ t .Run ("single valued secrets" , func (t * testing.T ) {
134+ resource .Test (t , resource.TestCase {
135+ PreCheck : func () { acctest .PreCheck (t ) },
136+ CheckDestroy : checkResourceIntegrationPolicyDestroy ,
137+ ProtoV6ProviderFactories : acctest .Providers ,
138+ Steps : []resource.TestStep {
139+ {
140+ SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionIntegrationPolicy ),
141+ Config : testAccResourceIntegrationPolicySecretsCreate (policyName , "created" ),
142+ Check : resource .ComposeTestCheckFunc (
143+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "name" , policyName ),
144+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "description" , "IntegrationPolicyTest Policy" ),
145+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_name" , "aws_logs" ),
146+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_version" , "1.4.0" ),
147+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "vars_json" , fmt .Sprintf (`{"access_key_id":"placeholder","default_region":"us-east-1","endpoint":"endpoint","secret_access_key":"created %s","session_token":"placeholder"}` , policyName )),
148+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.input_id" , "aws_logs-aws-cloudwatch" ),
149+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.enabled" , "true" ),
150+ resource .TestCheckNoResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.vars_json" ),
151+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.streams_json" , `{"aws_logs.generic":{"enabled":true,"vars":{"api_sleep":"200ms","api_timeput":"120s","custom":"","data_stream.dataset":"aws_logs.generic","log_streams":[],"number_of_workers":1,"preserve_original_event":false,"scan_frequency":"1m","start_position":"beginning","tags":["forwarded"]}}}` ),
152+ ),
153+ },
154+ {
155+ SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionIntegrationPolicy ),
156+ Config : testAccResourceIntegrationPolicySecretsUpdate (policyName , "updated" ),
157+ Check : resource .ComposeTestCheckFunc (
158+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "name" , policyName ),
159+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "description" , "Updated Integration Policy" ),
160+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_name" , "aws_logs" ),
161+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_version" , "1.4.0" ),
162+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "vars_json" , fmt .Sprintf (`{"access_key_id":"placeholder","default_region":"us-east-2","endpoint":"endpoint","secret_access_key":"updated %s","session_token":"placeholder"}` , policyName )),
163+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.input_id" , "aws_logs-aws-cloudwatch" ),
164+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.enabled" , "false" ),
165+ resource .TestCheckNoResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.vars_json" ),
166+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.streams_json" , `{"aws_logs.generic":{"enabled":false,"vars":{"api_sleep":"200ms","api_timeput":"120s","custom":"","data_stream.dataset":"aws_logs.generic","log_streams":[],"number_of_workers":1,"preserve_original_event":false,"scan_frequency":"2m","start_position":"beginning","tags":["forwarded"]}}}` ),
167+ ),
168+ },
169+ {
170+ SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionIntegrationPolicy ),
171+ ResourceName : "elasticstack_fleet_integration_policy.test_policy" ,
172+ Config : testAccResourceIntegrationPolicyUpdate (policyName ),
173+ ImportState : true ,
174+ ImportStateVerify : true ,
175+ ImportStateVerifyIgnore : []string {"vars_json" },
176+ Check : resource .ComposeTestCheckFunc (
177+ resource .TestMatchResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "vars_json" , regexp .MustCompile (`{"access_key_id":{"id":"\S+","isSecretRef":true},"default_region":"us-east-2","endpoint":"endpoint","secret_access_key":{"id":"\S+","isSecretRef":true},"session_token":{"id":"\S+","isSecretRef":true}}` )),
178+ ),
179+ },
164180 },
165- {
166- SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionIntegrationPolicy ),
167- ResourceName : "elasticstack_fleet_integration_policy.test_policy" ,
168- Config : testAccResourceIntegrationPolicyUpdate (policyName ),
169- ImportState : true ,
170- ImportStateVerify : true ,
171- ImportStateVerifyIgnore : []string {"vars_json" },
172- Check : resource .ComposeTestCheckFunc (
173- resource .TestMatchResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "vars_json" , regexp .MustCompile (`{"access_key_id":{"id":"\S+","isSecretRef":true},"default_region":"us-east-2","endpoint":"endpoint","secret_access_key":{"id":"\S+","isSecretRef":true},"session_token":{"id":"\S+","isSecretRef":true}}` )),
174- ),
181+ })
182+ })
183+
184+ t .Run ("multi-valued secrets" , func (t * testing.T ) {
185+ resource .Test (t , resource.TestCase {
186+ PreCheck : func () { acctest .PreCheck (t ) },
187+ CheckDestroy : checkResourceIntegrationPolicyDestroy ,
188+ ProtoV6ProviderFactories : acctest .Providers ,
189+ Steps : []resource.TestStep {
190+ {
191+ SkipFunc : versionutils .CheckIfVersionIsUnsupported (minVersionSqlIntegration ),
192+ Config : testAccResourceIntegrationPolicySecretsIds (policyName , "created" ),
193+ Check : resource .ComposeTestCheckFunc (
194+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "name" , policyName ),
195+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "description" , "SQL Integration Policy" ),
196+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_name" , "sql" ),
197+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "integration_version" , "1.1.0" ),
198+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.input_id" , "sql-sql/metrics" ),
199+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.enabled" , "true" ),
200+ resource .TestCheckNoResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.vars_json" ),
201+ resource .TestCheckResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.streams_json" , `{"sql.sql":{"enabled":true,"vars":{"data_stream.dataset":"sql","driver":"mysql","hosts":["root:test@tcp(127.0.0.1:3306)/"],"merge_results":false,"period":"1m","processors":"","sql_queries":"- query: SHOW GLOBAL STATUS LIKE 'Innodb_system%'\n response_format: variables\n \n","ssl":""}}}` ),
202+ ),
203+ },
204+ {
205+ SkipFunc : func () (bool , error ) {
206+ return versionutils .CheckIfVersionIsUnsupported (minVersionSqlIntegration )()
207+ },
208+ ResourceName : "elasticstack_fleet_integration_policy.test_policy" ,
209+ Config : testAccResourceIntegrationPolicySecretsIds (policyName , "created" ),
210+ ImportState : true ,
211+ ImportStateVerify : true ,
212+ ImportStateVerifyIgnore : []string {"input.0.streams_json" },
213+ Check : resource .ComposeTestCheckFunc (
214+ resource .TestMatchResourceAttr ("elasticstack_fleet_integration_policy.test_policy" , "input.0.streams_json" , regexp .MustCompile (`"hosts":{"ids":["\S+"],"isSecretRef":true}` )),
215+ ),
216+ },
175217 },
176- },
218+ })
177219 })
178220}
179221
@@ -451,3 +493,39 @@ resource "elasticstack_fleet_integration_policy" "test_policy" {
451493}
452494` , common , id , key , id )
453495}
496+
497+ func testAccResourceIntegrationPolicySecretsIds (id string , key string ) string {
498+ common := testAccResourceIntegrationPolicyCommon (id , "sql" , "1.1.0" )
499+ return fmt .Sprintf (`
500+ %s
501+
502+ resource "elasticstack_fleet_integration_policy" "test_policy" {
503+ name = "%s"
504+ namespace = "default"
505+ description = "SQL Integration Policy"
506+ agent_policy_id = elasticstack_fleet_agent_policy.test_policy.policy_id
507+ integration_name = elasticstack_fleet_integration.test_policy.name
508+ integration_version = elasticstack_fleet_integration.test_policy.version
509+
510+ input {
511+ input_id = "sql-sql/metrics"
512+ enabled = true
513+ streams_json = jsonencode({
514+ "sql.sql" : {
515+ "enabled" : true,
516+ "vars" : {
517+ "hosts" : ["root:test@tcp(127.0.0.1:3306)/"],
518+ "period" : "1m",
519+ "driver" : "mysql",
520+ "sql_queries" : "- query: SHOW GLOBAL STATUS LIKE 'Innodb_system%%'\n response_format: variables\n \n",
521+ "merge_results" : false,
522+ "ssl" : "",
523+ "data_stream.dataset" : "sql",
524+ "processors" : ""
525+ }
526+ }
527+ })
528+ }
529+ }
530+ ` , common , id )
531+ }
0 commit comments