Skip to content

Commit 4ddc7f2

Browse files
committed
fix: connections object has a mismatch when destroying
1 parent 5e94a52 commit 4ddc7f2

File tree

4 files changed

+120
-1
lines changed

4 files changed

+120
-1
lines changed

.github/workflows/terraform_provider_main.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,17 @@ jobs:
179179
go-version-file: go.mod
180180
- run: EXECUTE_TESTS=true make testacc TESTARGS='-run="TestAcc(DataSource|Resource)RedisCloud(TransitGatewayAttachment|PaymentMethod).*"'
181181

182+
go_unit_test:
183+
name: go unit test
184+
needs: [go_build]
185+
runs-on: ubuntu-latest
186+
steps:
187+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
188+
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
189+
with:
190+
go-version-file: go.mod
191+
- run: go test ./... -short
192+
182193
tfproviderlint:
183194
name: tfproviderlint
184195
needs: [go_build]

.github/workflows/terraform_provider_pr.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,17 @@ jobs:
183183
- run: EXECUTE_TESTS=true make testacc TESTARGS='-run="TestAccResourceRedisCloudPrivateLink_CRUDI"'
184184

185185

186+
go_unit_test:
187+
name: go unit test
188+
needs: [go_build]
189+
runs-on: ubuntu-latest
190+
steps:
191+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
192+
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
193+
with:
194+
go-version-file: go.mod
195+
- run: go test ./... -short
196+
186197
tfproviderlint:
187198
name: tfproviderlint
188199
needs: [go_build]

provider/privatelink/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func flattenConnections(connections []*pl.PrivateLinkConnection) []map[string]in
159159
tf := map[string]interface{}{
160160
"association_id": redis.StringValue(connection.AssociationId),
161161
"connection_id": redis.StringValue(connection.ConnectionId),
162-
"type": redis.StringValue(connection.Type),
162+
"connection_type": redis.StringValue(connection.Type),
163163
"owner_id": redis.StringValue(connection.OwnerId),
164164
"association_date": redis.StringValue(connection.AssociationDate),
165165
}

provider/privatelink/utils_test.go

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package privatelink
2+
3+
import (
4+
"testing"
5+
6+
"github.com/RedisLabs/rediscloud-go-api/redis"
7+
pl "github.com/RedisLabs/rediscloud-go-api/service/privatelink"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestFlattenConnections(t *testing.T) {
12+
// Test that flattenConnections produces keys that match the schema
13+
connections := []*pl.PrivateLinkConnection{
14+
{
15+
AssociationId: redis.String("assoc-123"),
16+
ConnectionId: redis.String("conn-456"),
17+
Type: redis.String("vpc-endpoint"),
18+
OwnerId: redis.String("owner-789"),
19+
AssociationDate: redis.String("2024-01-01"),
20+
},
21+
}
22+
23+
result := flattenConnections(connections)
24+
25+
assert.Len(t, result, 1)
26+
27+
conn := result[0]
28+
assert.Contains(t, conn, "association_id")
29+
assert.Contains(t, conn, "connection_id")
30+
assert.Contains(t, conn, "connection_type")
31+
assert.Contains(t, conn, "owner_id")
32+
assert.Contains(t, conn, "association_date")
33+
34+
assert.Equal(t, "assoc-123", conn["association_id"])
35+
assert.Equal(t, "conn-456", conn["connection_id"])
36+
assert.Equal(t, "vpc-endpoint", conn["connection_type"])
37+
assert.Equal(t, "owner-789", conn["owner_id"])
38+
assert.Equal(t, "2024-01-01", conn["association_date"])
39+
}
40+
41+
func TestFlattenConnectionsEmpty(t *testing.T) {
42+
result := flattenConnections([]*pl.PrivateLinkConnection{})
43+
assert.Len(t, result, 0)
44+
}
45+
46+
func TestFlattenDatabases(t *testing.T) {
47+
databases := []*pl.PrivateLinkDatabase{
48+
{
49+
DatabaseId: redis.Int(12345),
50+
Port: redis.Int(16379),
51+
ResourceLinkEndpoint: redis.String("endpoint.example.com"),
52+
},
53+
}
54+
55+
result := flattenDatabases(databases)
56+
57+
assert.Len(t, result, 1)
58+
59+
db := result[0]
60+
assert.Contains(t, db, "database_id")
61+
assert.Contains(t, db, "port")
62+
assert.Contains(t, db, "resource_link_endpoint")
63+
64+
assert.Equal(t, 12345, db["database_id"])
65+
assert.Equal(t, 16379, db["port"])
66+
assert.Equal(t, "endpoint.example.com", db["resource_link_endpoint"])
67+
}
68+
69+
func TestFlattenPrincipals(t *testing.T) {
70+
principals := []*pl.PrivateLinkPrincipal{
71+
{
72+
Principal: redis.String("arn:aws:iam::123456789012:root"),
73+
Type: redis.String("aws_account"),
74+
Alias: redis.String("my-account"),
75+
},
76+
{
77+
Principal: redis.String("arn:aws:iam::987654321098:root"),
78+
Type: redis.String("aws_account"),
79+
Alias: redis.String("another-account"),
80+
},
81+
}
82+
83+
result := flattenPrincipals(principals)
84+
85+
assert.Len(t, result, 2)
86+
87+
// Verify keys
88+
for _, p := range result {
89+
assert.Contains(t, p, "principal")
90+
assert.Contains(t, p, "principal_type")
91+
assert.Contains(t, p, "principal_alias")
92+
}
93+
94+
// Results should be sorted by principal
95+
assert.Equal(t, "arn:aws:iam::123456789012:root", result[0]["principal"])
96+
assert.Equal(t, "arn:aws:iam::987654321098:root", result[1]["principal"])
97+
}

0 commit comments

Comments
 (0)