Skip to content

Commit 805e757

Browse files
stevenyang72BBBmau
authored andcommitted
Enforce id validation for WorkloadIdentityPool Managed Identity (GoogleCloudPlatform#14126)
1 parent 2c949ef commit 805e757

File tree

4 files changed

+45
-5
lines changed

4 files changed

+45
-5
lines changed

mmv1/products/iambeta/WorkloadIdentityPoolManagedIdentity.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ parameters:
8484
8585
8686
The prefix `gcp-` will be reserved for future uses.
87+
validation:
88+
function: 'ValidateWorkloadIdentityPoolManagedIdentityId'
8789
properties:
8890
- name: 'name'
8991
type: String

mmv1/products/iambeta/WorkloadIdentityPoolNamespace.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ examples:
3939
primary_resource_id: 'example'
4040
vars:
4141
workload_identity_pool_id: 'example-pool'
42-
workload_identity_pool_namespace_id: 'example-nmspc'
42+
workload_identity_pool_namespace_id: 'example-namespace'
4343
- name: 'iam_workload_identity_pool_namespace_full'
4444
primary_resource_id: 'example'
4545
vars:
4646
workload_identity_pool_id: 'example-pool'
47-
workload_identity_pool_namespace_id: 'example-nmspc'
47+
workload_identity_pool_namespace_id: 'example-namespace'
4848
parameters:
4949
- name: 'workload_identity_pool_id'
5050
type: String
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{{- if ne $.TargetVersionName "ga" -}}
2+
package iambeta_test
3+
4+
import (
5+
"strings"
6+
"testing"
7+
8+
"github.com/hashicorp/terraform-provider-google/google/services/iambeta"
9+
"github.com/hashicorp/terraform-provider-google/google/verify"
10+
)
11+
12+
func TestValidateWorkloadIdentityPoolManagedIdentityId(t *testing.T) {
13+
x := []verify.StringValidationTestCase{
14+
// No errors
15+
{TestName: "basic", Value: "foobar"},
16+
{TestName: "with numbers", Value: "foobar123"},
17+
{TestName: "short", Value: "foos"},
18+
{TestName: "long", Value: "12345678901234567890123456789012"},
19+
{TestName: "has a hyphen", Value: "foo-bar"},
20+
21+
// With errors
22+
{TestName: "empty", Value: "", ExpectError: true},
23+
{TestName: "starts with a gcp-", Value: "gcp-foobar", ExpectError: true},
24+
{TestName: "with uppercase", Value: "fooBar", ExpectError: true},
25+
{TestName: "has an slash", Value: "foo/bar", ExpectError: true},
26+
{TestName: "has an backslash", Value: "foo\bar", ExpectError: true},
27+
{TestName: "too short", Value: "f", ExpectError: true},
28+
{TestName: "too long", Value: strings.Repeat("f", 64), ExpectError: true},
29+
{TestName: "starts with non-alphanumeric", Value: "-foobar", ExpectError: true},
30+
{TestName: "ends with non-alphanumeric", Value: "foobar-", ExpectError: true},
31+
}
32+
33+
es := verify.TestStringValidationCases(x, iambeta.ValidateWorkloadIdentityPoolManagedIdentityId)
34+
if len(es) > 0 {
35+
t.Errorf("Failed to validate WorkloadIdentityPoolManagedIdentity names: %v", es)
36+
}
37+
}
38+
{{- end -}}

mmv1/third_party/terraform/services/iambeta/resource_iam_workload_identity_pool_namespace_test.go.tmpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ resource "google_iam_workload_identity_pool_namespace" "example" {
101101
provider = google-beta
102102
103103
workload_identity_pool_id = google_iam_workload_identity_pool.pool.workload_identity_pool_id
104-
workload_identity_pool_namespace_id = "tf-test-example-nmspc%{random_suffix}"
104+
workload_identity_pool_namespace_id = "tf-test-example-namespace%{random_suffix}"
105105
}
106106
`, context)
107107
}
@@ -119,7 +119,7 @@ resource "google_iam_workload_identity_pool_namespace" "example" {
119119
provider = google-beta
120120
121121
workload_identity_pool_id = google_iam_workload_identity_pool.pool.workload_identity_pool_id
122-
workload_identity_pool_namespace_id = "tf-test-example-nmspc%{random_suffix}"
122+
workload_identity_pool_namespace_id = "tf-test-example-namespace%{random_suffix}"
123123
description = "Example Namespace in a Workload Identity Pool"
124124
disabled = true
125125
}
@@ -139,7 +139,7 @@ resource "google_iam_workload_identity_pool_namespace" "example" {
139139
provider = google-beta
140140
141141
workload_identity_pool_id = google_iam_workload_identity_pool.pool.workload_identity_pool_id
142-
workload_identity_pool_namespace_id = "tf-test-example-nmspc%{random_suffix}"
142+
workload_identity_pool_namespace_id = "tf-test-example-namespace%{random_suffix}"
143143
description = "Updated Namespace in a Workload Identity Pool"
144144
disabled = false
145145
}

0 commit comments

Comments
 (0)