From 254c3c68d2709b445536b58fb6cdf1a0862b25ed Mon Sep 17 00:00:00 2001 From: Toby Brain Date: Tue, 28 Oct 2025 14:56:57 +1100 Subject: [PATCH] Update the system_user acceptance tests to utilise the config directory pattern We want to standardise on this, since this resource is being held up as an example to follow we should ensure to follows the desired design --- .../security/system_user/acc_test.go | 85 +++++++++---------- .../create/system_user.tf | 12 +++ .../update/system_user.tf | 18 ++++ .../system_user.tf | 12 +++ .../system_user.tf | 18 ++++ 5 files changed, 100 insertions(+), 45 deletions(-) create mode 100644 internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/create/system_user.tf create mode 100644 internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/update/system_user.tf create mode 100644 internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserFromSDK/system_user.tf create mode 100644 internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserNotFound/system_user.tf diff --git a/internal/elasticsearch/security/system_user/acc_test.go b/internal/elasticsearch/security/system_user/acc_test.go index 4eba4b17b..0e2bcd7b7 100644 --- a/internal/elasticsearch/security/system_user/acc_test.go +++ b/internal/elasticsearch/security/system_user/acc_test.go @@ -1,32 +1,45 @@ package system_user_test import ( + _ "embed" "regexp" "testing" "github.com/elastic/terraform-provider-elasticstack/internal/acctest" "github.com/elastic/terraform-provider-elasticstack/internal/acctest/checks" + "github.com/hashicorp/terraform-plugin-testing/config" "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) +const remoteMonitoringUser = "remote_monitoring_user" + func TestAccResourceSecuritySystemUser(t *testing.T) { + newPassword := "new_password" resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProtoV6ProviderFactories: acctest.Providers, + PreCheck: func() { acctest.PreCheck(t) }, Steps: []resource.TestStep{ { - Config: testAccResourceSecuritySystemUserCreate, + ProtoV6ProviderFactories: acctest.Providers, + ConfigDirectory: acctest.NamedTestCaseDirectory("create"), + ConfigVariables: config.Variables{ + "username": config.StringVariable(remoteMonitoringUser), + }, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", "remote_monitoring_user"), + resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", remoteMonitoringUser), resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "enabled", "true"), ), }, { - Config: testAccResourceSecuritySystemUserUpdate, + ProtoV6ProviderFactories: acctest.Providers, + ConfigDirectory: acctest.NamedTestCaseDirectory("update"), + ConfigVariables: config.Variables{ + "username": config.StringVariable(remoteMonitoringUser), + "password": config.StringVariable(newPassword), + }, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", "remote_monitoring_user"), + resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", remoteMonitoringUser), resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "enabled", "true"), - checks.CheckUserCanAuthenticate("remote_monitoring_user", "new_password"), + checks.CheckUserCanAuthenticate(remoteMonitoringUser, newPassword), ), }, }, @@ -35,17 +48,24 @@ func TestAccResourceSecuritySystemUser(t *testing.T) { func TestAccResourceSecuritySystemUserNotFound(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(t) }, - ProtoV6ProviderFactories: acctest.Providers, + PreCheck: func() { acctest.PreCheck(t) }, Steps: []resource.TestStep{ { - Config: testAccResourceSecuritySystemUserNotFound, + ProtoV6ProviderFactories: acctest.Providers, + ConfigDirectory: acctest.NamedTestCaseDirectory(""), + ConfigVariables: config.Variables{ + "username": config.StringVariable("not_system_user"), + "password": config.StringVariable("new_password"), + }, ExpectError: regexp.MustCompile(`System user "not_system_user" not found`), }, }, }) } +//go:embed testdata/TestAccResourceSecuritySystemUserFromSDK/system_user.tf +var sdkCreateTestConfig string + func TestAccResourceSecuritySystemUserFromSDK(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t) }, @@ -58,51 +78,26 @@ func TestAccResourceSecuritySystemUserFromSDK(t *testing.T) { VersionConstraint: "0.11.15", }, }, - Config: testAccResourceSecuritySystemUserCreate, + ConfigVariables: config.Variables{ + "username": config.StringVariable(remoteMonitoringUser), + }, + Config: sdkCreateTestConfig, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", "remote_monitoring_user"), + resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", remoteMonitoringUser), resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "enabled", "true"), ), }, { ProtoV6ProviderFactories: acctest.Providers, - Config: testAccResourceSecuritySystemUserCreate, + ConfigDirectory: acctest.NamedTestCaseDirectory(""), + ConfigVariables: config.Variables{ + "username": config.StringVariable(remoteMonitoringUser), + }, Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", "remote_monitoring_user"), + resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "username", remoteMonitoringUser), resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_system_user.remote_monitoring_user", "enabled", "true"), ), }, }, }) } - -const testAccResourceSecuritySystemUserCreate = ` -provider "elasticstack" { - elasticsearch {} -} - -resource "elasticstack_elasticsearch_security_system_user" "remote_monitoring_user" { - username = "remote_monitoring_user" -} -` - -const testAccResourceSecuritySystemUserUpdate = ` -provider "elasticstack" { - elasticsearch {} -} - -resource "elasticstack_elasticsearch_security_system_user" "remote_monitoring_user" { - username = "remote_monitoring_user" - password = "new_password" -} - ` -const testAccResourceSecuritySystemUserNotFound = ` -provider "elasticstack" { - elasticsearch {} -} - -resource "elasticstack_elasticsearch_security_system_user" "test" { - username = "not_system_user" - password = "new_password" -} - ` diff --git a/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/create/system_user.tf b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/create/system_user.tf new file mode 100644 index 000000000..271f37db1 --- /dev/null +++ b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/create/system_user.tf @@ -0,0 +1,12 @@ +variable "username" { + description = "The system username" + type = string +} + +provider "elasticstack" { + elasticsearch {} +} + +resource "elasticstack_elasticsearch_security_system_user" "remote_monitoring_user" { + username = var.username +} \ No newline at end of file diff --git a/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/update/system_user.tf b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/update/system_user.tf new file mode 100644 index 000000000..c47d36381 --- /dev/null +++ b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUser/update/system_user.tf @@ -0,0 +1,18 @@ +variable "username" { + description = "The system username" + type = string +} + +variable "password" { + description = "The password for the system user" + type = string +} + +provider "elasticstack" { + elasticsearch {} +} + +resource "elasticstack_elasticsearch_security_system_user" "remote_monitoring_user" { + username = var.username + password = var.password +} \ No newline at end of file diff --git a/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserFromSDK/system_user.tf b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserFromSDK/system_user.tf new file mode 100644 index 000000000..271f37db1 --- /dev/null +++ b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserFromSDK/system_user.tf @@ -0,0 +1,12 @@ +variable "username" { + description = "The system username" + type = string +} + +provider "elasticstack" { + elasticsearch {} +} + +resource "elasticstack_elasticsearch_security_system_user" "remote_monitoring_user" { + username = var.username +} \ No newline at end of file diff --git a/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserNotFound/system_user.tf b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserNotFound/system_user.tf new file mode 100644 index 000000000..fce39656b --- /dev/null +++ b/internal/elasticsearch/security/system_user/testdata/TestAccResourceSecuritySystemUserNotFound/system_user.tf @@ -0,0 +1,18 @@ +variable "username" { + description = "The system username" + type = string +} + +variable "password" { + description = "The password for the system user" + type = string +} + +provider "elasticstack" { + elasticsearch {} +} + +resource "elasticstack_elasticsearch_security_system_user" "test" { + username = var.username + password = var.password +} \ No newline at end of file