Skip to content

Commit e7a4064

Browse files
authored
Allow free text for Elasticsearch role mapping names (#1373)
* Allow free text for Elasticsearch role mapping names * Changelog
1 parent c4683a4 commit e7a4064

File tree

3 files changed

+48
-43
lines changed

3 files changed

+48
-43
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## [Unreleased]
22

3+
- Fix regression restricting the characters in an `elasticstack_elasticsearch_role_mapping` `name`. ([#1373](https://github.com/elastic/terraform-provider-elasticstack/pull/1373))
4+
35
## [0.12.0] - 2025-10-15
46

57
- Fix provider crash with `elasticstack_kibana_action_connector` when `config` or `secrets` was unset in 0.11.17 ([#1355](https://github.com/elastic/terraform-provider-elasticstack/pull/1355))

internal/elasticsearch/security/role_mapping/acc_test.go

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,44 +14,52 @@ import (
1414
)
1515

1616
func TestAccResourceSecurityRoleMapping(t *testing.T) {
17-
roleMappingName := sdkacctest.RandStringFromCharSet(10, sdkacctest.CharSetAlphaNum)
18-
resource.Test(t, resource.TestCase{
19-
PreCheck: func() { acctest.PreCheck(t) },
20-
CheckDestroy: checkResourceSecurityRoleMappingDestroy,
21-
ProtoV6ProviderFactories: acctest.Providers,
22-
Steps: []resource.TestStep{
23-
{
24-
Config: testAccResourceSecurityRoleMappingCreate(roleMappingName),
25-
Check: resource.ComposeTestCheckFunc(
26-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "name", roleMappingName),
27-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "enabled", "true"),
28-
checks.TestCheckResourceListAttr("elasticstack_elasticsearch_security_role_mapping.test", "roles", []string{"admin"}),
29-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "rules", `{"any":[{"field":{"username":"esadmin"}},{"field":{"groups":"cn=admins,dc=example,dc=com"}}]}`),
30-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "metadata", `{"version":1}`),
31-
),
32-
},
33-
{
34-
Config: testAccResourceSecurityRoleMappingUpdate(roleMappingName),
35-
Check: resource.ComposeTestCheckFunc(
36-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "name", roleMappingName),
37-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "enabled", "false"),
38-
checks.TestCheckResourceListAttr("elasticstack_elasticsearch_security_role_mapping.test", "roles", []string{"admin", "user"}),
39-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "rules", `{"any":[{"field":{"username":"esadmin"}},{"field":{"groups":"cn=admins,dc=example,dc=com"}}]}`),
40-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "metadata", `{}`),
41-
),
42-
},
43-
{
44-
Config: testAccResourceSecurityRoleMappingRoleTemplates(roleMappingName),
45-
Check: resource.ComposeTestCheckFunc(
46-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "name", roleMappingName),
47-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "enabled", "false"),
48-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "role_templates", `[{"format":"json","template":"{\"source\":\"{{#tojson}}groups{{/tojson}}\"}"}]`),
49-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "rules", `{"any":[{"field":{"username":"esadmin"}},{"field":{"groups":"cn=admins,dc=example,dc=com"}}]}`),
50-
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "metadata", `{}`),
51-
),
52-
},
53-
},
54-
})
17+
names := []string{
18+
sdkacctest.RandStringFromCharSet(10, sdkacctest.CharSetAlphaNum),
19+
sdkacctest.RandStringFromCharSet(5, sdkacctest.CharSetAlphaNum) + " " + sdkacctest.RandStringFromCharSet(4, sdkacctest.CharSetAlphaNum),
20+
}
21+
22+
for _, roleMappingName := range names {
23+
t.Run("roleMappingName = "+roleMappingName, func(t *testing.T) {
24+
resource.Test(t, resource.TestCase{
25+
PreCheck: func() { acctest.PreCheck(t) },
26+
CheckDestroy: checkResourceSecurityRoleMappingDestroy,
27+
ProtoV6ProviderFactories: acctest.Providers,
28+
Steps: []resource.TestStep{
29+
{
30+
Config: testAccResourceSecurityRoleMappingCreate(roleMappingName),
31+
Check: resource.ComposeTestCheckFunc(
32+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "name", roleMappingName),
33+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "enabled", "true"),
34+
checks.TestCheckResourceListAttr("elasticstack_elasticsearch_security_role_mapping.test", "roles", []string{"admin"}),
35+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "rules", `{"any":[{"field":{"username":"esadmin"}},{"field":{"groups":"cn=admins,dc=example,dc=com"}}]}`),
36+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "metadata", `{"version":1}`),
37+
),
38+
},
39+
{
40+
Config: testAccResourceSecurityRoleMappingUpdate(roleMappingName),
41+
Check: resource.ComposeTestCheckFunc(
42+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "name", roleMappingName),
43+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "enabled", "false"),
44+
checks.TestCheckResourceListAttr("elasticstack_elasticsearch_security_role_mapping.test", "roles", []string{"admin", "user"}),
45+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "rules", `{"any":[{"field":{"username":"esadmin"}},{"field":{"groups":"cn=admins,dc=example,dc=com"}}]}`),
46+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "metadata", `{}`),
47+
),
48+
},
49+
{
50+
Config: testAccResourceSecurityRoleMappingRoleTemplates(roleMappingName),
51+
Check: resource.ComposeTestCheckFunc(
52+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "name", roleMappingName),
53+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "enabled", "false"),
54+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "role_templates", `[{"format":"json","template":"{\"source\":\"{{#tojson}}groups{{/tojson}}\"}"}]`),
55+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "rules", `{"any":[{"field":{"username":"esadmin"}},{"field":{"groups":"cn=admins,dc=example,dc=com"}}]}`),
56+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_security_role_mapping.test", "metadata", `{}`),
57+
),
58+
},
59+
},
60+
})
61+
})
62+
}
5563
}
5664

5765
func TestAccResourceSecurityRoleMappingFromSDK(t *testing.T) {

internal/elasticsearch/security/role_mapping/schema.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package role_mapping
22

33
import (
44
"context"
5-
"regexp"
65

76
providerschema "github.com/elastic/terraform-provider-elasticstack/internal/schema"
87
"github.com/hashicorp/terraform-plugin-framework-jsontypes/jsontypes"
@@ -40,10 +39,6 @@ func GetSchema() schema.Schema {
4039
PlanModifiers: []planmodifier.String{
4140
stringplanmodifier.RequiresReplace(),
4241
},
43-
Validators: []validator.String{
44-
stringvalidator.LengthBetween(1, 1024),
45-
stringvalidator.RegexMatches(regexp.MustCompile(`^[[:graph:]]+$`), "must contain printable characters and no spaces"),
46-
},
4742
},
4843
"enabled": schema.BoolAttribute{
4944
MarkdownDescription: "Mappings that have `enabled` set to `false` are ignored when role mapping is performed.",

0 commit comments

Comments
 (0)