Skip to content

Commit 99c0206

Browse files
committed
test: add test cases for status models
1 parent f1e9256 commit 99c0206

File tree

5 files changed

+588
-0
lines changed

5 files changed

+588
-0
lines changed
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package env_status
2+
3+
import (
4+
"testing"
5+
6+
sdk "github.com/altinity/terraform-provider-altinitycloud/internal/sdk/client"
7+
"github.com/hashicorp/terraform-plugin-framework/types"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestAWSEnvStatusModel_toModel(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
input sdk.GetAWSEnvStatus_AWSEnv
15+
expected AWSEnvStatusModel
16+
}{
17+
{
18+
name: "basic aws env status",
19+
input: sdk.GetAWSEnvStatus_AWSEnv{
20+
Name: "test-env",
21+
SpecRevision: 1,
22+
Status: sdk.GetAWSEnvStatus_AWSEnv_Status{
23+
AppliedSpecRevision: 1,
24+
PendingDelete: false,
25+
LoadBalancers: sdk.GetAWSEnvStatus_AWSEnv_Status_LoadBalancers{
26+
Internal: sdk.GetAWSEnvStatus_AWSEnv_Status_LoadBalancers_Internal{
27+
EndpointServiceName: stringPtr("test.service.name"),
28+
},
29+
},
30+
PeeringConnections: []*sdk.GetAWSEnvStatus_AWSEnv_Status_PeeringConnections{
31+
{
32+
ID: stringPtr("pcx-12345"),
33+
VpcID: "vpc-12345",
34+
},
35+
},
36+
},
37+
},
38+
expected: AWSEnvStatusModel{
39+
Name: types.StringValue("test-env"),
40+
AppliedSpecRevision: types.Int64Value(1),
41+
PendingDelete: types.BoolValue(false),
42+
LoadBalancers: &AWSEnvLoadBalancersStatus{
43+
Internal: &AWSEnvLoadBalancerInternalStatus{
44+
EndpointServiceName: types.StringValue("test.service.name"),
45+
},
46+
},
47+
PeeringConnections: []AWSEnvPeeringConnectionStatus{
48+
{
49+
Id: types.StringValue("pcx-12345"),
50+
VpcId: types.StringValue("vpc-12345"),
51+
},
52+
},
53+
},
54+
},
55+
{
56+
name: "env status with nil endpoint service name",
57+
input: sdk.GetAWSEnvStatus_AWSEnv{
58+
Name: "test-env-nil",
59+
SpecRevision: 2,
60+
Status: sdk.GetAWSEnvStatus_AWSEnv_Status{
61+
AppliedSpecRevision: 2,
62+
PendingDelete: true,
63+
LoadBalancers: sdk.GetAWSEnvStatus_AWSEnv_Status_LoadBalancers{
64+
Internal: sdk.GetAWSEnvStatus_AWSEnv_Status_LoadBalancers_Internal{
65+
EndpointServiceName: nil,
66+
},
67+
},
68+
PeeringConnections: []*sdk.GetAWSEnvStatus_AWSEnv_Status_PeeringConnections{},
69+
},
70+
},
71+
expected: AWSEnvStatusModel{
72+
Name: types.StringValue("test-env-nil"),
73+
AppliedSpecRevision: types.Int64Value(2),
74+
PendingDelete: types.BoolValue(true),
75+
LoadBalancers: &AWSEnvLoadBalancersStatus{
76+
Internal: &AWSEnvLoadBalancerInternalStatus{
77+
EndpointServiceName: types.StringNull(),
78+
},
79+
},
80+
PeeringConnections: []AWSEnvPeeringConnectionStatus{},
81+
},
82+
},
83+
{
84+
name: "env status with multiple peering connections",
85+
input: sdk.GetAWSEnvStatus_AWSEnv{
86+
Name: "test-env-multi",
87+
SpecRevision: 3,
88+
Status: sdk.GetAWSEnvStatus_AWSEnv_Status{
89+
AppliedSpecRevision: 3,
90+
PendingDelete: false,
91+
LoadBalancers: sdk.GetAWSEnvStatus_AWSEnv_Status_LoadBalancers{
92+
Internal: sdk.GetAWSEnvStatus_AWSEnv_Status_LoadBalancers_Internal{
93+
EndpointServiceName: stringPtr("multi.service.name"),
94+
},
95+
},
96+
PeeringConnections: []*sdk.GetAWSEnvStatus_AWSEnv_Status_PeeringConnections{
97+
{
98+
ID: stringPtr("pcx-11111"),
99+
VpcID: "vpc-11111",
100+
},
101+
{
102+
ID: stringPtr("pcx-22222"),
103+
VpcID: "vpc-22222",
104+
},
105+
{
106+
ID: nil,
107+
VpcID: "vpc-33333",
108+
},
109+
},
110+
},
111+
},
112+
expected: AWSEnvStatusModel{
113+
Name: types.StringValue("test-env-multi"),
114+
AppliedSpecRevision: types.Int64Value(3),
115+
PendingDelete: types.BoolValue(false),
116+
LoadBalancers: &AWSEnvLoadBalancersStatus{
117+
Internal: &AWSEnvLoadBalancerInternalStatus{
118+
EndpointServiceName: types.StringValue("multi.service.name"),
119+
},
120+
},
121+
PeeringConnections: []AWSEnvPeeringConnectionStatus{
122+
{
123+
Id: types.StringValue("pcx-11111"),
124+
VpcId: types.StringValue("vpc-11111"),
125+
},
126+
{
127+
Id: types.StringValue("pcx-22222"),
128+
VpcId: types.StringValue("vpc-22222"),
129+
},
130+
{
131+
Id: types.StringNull(),
132+
VpcId: types.StringValue("vpc-33333"),
133+
},
134+
},
135+
},
136+
},
137+
}
138+
139+
for _, tt := range tests {
140+
t.Run(tt.name, func(t *testing.T) {
141+
model := &AWSEnvStatusModel{}
142+
model.toModel(tt.input)
143+
144+
assert.Equal(t, tt.expected.Name, model.Name)
145+
assert.Equal(t, tt.expected.AppliedSpecRevision, model.AppliedSpecRevision)
146+
assert.Equal(t, tt.expected.PendingDelete, model.PendingDelete)
147+
148+
// Test LoadBalancers
149+
if tt.expected.LoadBalancers != nil {
150+
assert.NotNil(t, model.LoadBalancers)
151+
if tt.expected.LoadBalancers.Internal != nil {
152+
assert.NotNil(t, model.LoadBalancers.Internal)
153+
assert.Equal(t, tt.expected.LoadBalancers.Internal.EndpointServiceName, model.LoadBalancers.Internal.EndpointServiceName)
154+
}
155+
}
156+
157+
// Test PeeringConnections
158+
assert.Equal(t, len(tt.expected.PeeringConnections), len(model.PeeringConnections))
159+
for i, expectedConn := range tt.expected.PeeringConnections {
160+
if i < len(model.PeeringConnections) {
161+
assert.Equal(t, expectedConn.Id, model.PeeringConnections[i].Id)
162+
assert.Equal(t, expectedConn.VpcId, model.PeeringConnections[i].VpcId)
163+
}
164+
}
165+
})
166+
}
167+
}
168+
169+
// Helper function to create string pointers
170+
func stringPtr(s string) *string {
171+
return &s
172+
}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
package env_status
2+
3+
import (
4+
"testing"
5+
6+
sdk "github.com/altinity/terraform-provider-altinitycloud/internal/sdk/client"
7+
"github.com/hashicorp/terraform-plugin-framework/types"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestAzureEnvStatusModel_toModel(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
input sdk.GetAzureEnvStatus_AzureEnv
15+
expected AzureEnvStatusModel
16+
}{
17+
{
18+
name: "basic azure env status",
19+
input: sdk.GetAzureEnvStatus_AzureEnv{
20+
Name: "test-azure-env",
21+
SpecRevision: 1,
22+
Status: sdk.GetAzureEnvStatus_AzureEnv_Status{
23+
AppliedSpecRevision: 1,
24+
PendingDelete: false,
25+
LoadBalancers: sdk.GetAzureEnvStatus_AzureEnv_Status_LoadBalancers{
26+
Internal: sdk.GetAzureEnvStatus_AzureEnv_Status_LoadBalancers_Internal{
27+
PrivateLinkServiceAlias: stringPtr("test.privatelink.alias"),
28+
},
29+
},
30+
},
31+
},
32+
expected: AzureEnvStatusModel{
33+
Name: types.StringValue("test-azure-env"),
34+
AppliedSpecRevision: types.Int64Value(1),
35+
PendingDelete: types.BoolValue(false),
36+
LoadBalancers: &AzureEnvLoadBalancersStatus{
37+
Internal: &AzureEnvLoadBalancerInternalStatus{
38+
PrivateLinkServiceAlias: types.StringValue("test.privatelink.alias"),
39+
},
40+
},
41+
},
42+
},
43+
{
44+
name: "azure env status with nil private link service alias",
45+
input: sdk.GetAzureEnvStatus_AzureEnv{
46+
Name: "test-azure-env-nil",
47+
SpecRevision: 2,
48+
Status: sdk.GetAzureEnvStatus_AzureEnv_Status{
49+
AppliedSpecRevision: 2,
50+
PendingDelete: true,
51+
LoadBalancers: sdk.GetAzureEnvStatus_AzureEnv_Status_LoadBalancers{
52+
Internal: sdk.GetAzureEnvStatus_AzureEnv_Status_LoadBalancers_Internal{
53+
PrivateLinkServiceAlias: nil,
54+
},
55+
},
56+
},
57+
},
58+
expected: AzureEnvStatusModel{
59+
Name: types.StringValue("test-azure-env-nil"),
60+
AppliedSpecRevision: types.Int64Value(2),
61+
PendingDelete: types.BoolValue(true),
62+
LoadBalancers: &AzureEnvLoadBalancersStatus{
63+
Internal: &AzureEnvLoadBalancerInternalStatus{
64+
PrivateLinkServiceAlias: types.StringNull(),
65+
},
66+
},
67+
},
68+
},
69+
{
70+
name: "azure env status with large revision numbers",
71+
input: sdk.GetAzureEnvStatus_AzureEnv{
72+
Name: "test-azure-env-large",
73+
SpecRevision: 9999,
74+
Status: sdk.GetAzureEnvStatus_AzureEnv_Status{
75+
AppliedSpecRevision: 9999,
76+
PendingDelete: false,
77+
LoadBalancers: sdk.GetAzureEnvStatus_AzureEnv_Status_LoadBalancers{
78+
Internal: sdk.GetAzureEnvStatus_AzureEnv_Status_LoadBalancers_Internal{
79+
PrivateLinkServiceAlias: stringPtr("large.revision.test"),
80+
},
81+
},
82+
},
83+
},
84+
expected: AzureEnvStatusModel{
85+
Name: types.StringValue("test-azure-env-large"),
86+
AppliedSpecRevision: types.Int64Value(9999),
87+
PendingDelete: types.BoolValue(false),
88+
LoadBalancers: &AzureEnvLoadBalancersStatus{
89+
Internal: &AzureEnvLoadBalancerInternalStatus{
90+
PrivateLinkServiceAlias: types.StringValue("large.revision.test"),
91+
},
92+
},
93+
},
94+
},
95+
}
96+
97+
for _, tt := range tests {
98+
t.Run(tt.name, func(t *testing.T) {
99+
model := &AzureEnvStatusModel{}
100+
model.toModel(tt.input)
101+
102+
assert.Equal(t, tt.expected.Name, model.Name)
103+
assert.Equal(t, tt.expected.AppliedSpecRevision, model.AppliedSpecRevision)
104+
assert.Equal(t, tt.expected.PendingDelete, model.PendingDelete)
105+
106+
// Test LoadBalancers
107+
if tt.expected.LoadBalancers != nil {
108+
assert.NotNil(t, model.LoadBalancers)
109+
if tt.expected.LoadBalancers.Internal != nil {
110+
assert.NotNil(t, model.LoadBalancers.Internal)
111+
assert.Equal(t, tt.expected.LoadBalancers.Internal.PrivateLinkServiceAlias, model.LoadBalancers.Internal.PrivateLinkServiceAlias)
112+
}
113+
}
114+
})
115+
}
116+
}
117+
118+
// Helper function to create string pointers
119+
func stringPtr(s string) *string {
120+
return &s
121+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package env_status
2+
3+
import (
4+
"testing"
5+
6+
sdk "github.com/altinity/terraform-provider-altinitycloud/internal/sdk/client"
7+
"github.com/hashicorp/terraform-plugin-framework/types"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestGCPEnvStatusModel_toModel(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
input sdk.GetGCPEnvStatus_GCPEnv
15+
expected GCPEnvStatusModel
16+
}{
17+
{
18+
name: "basic gcp env status",
19+
input: sdk.GetGCPEnvStatus_GCPEnv{
20+
Name: "test-gcp-env",
21+
SpecRevision: 1,
22+
Status: sdk.GetGCPEnvStatus_GCPEnv_Status{
23+
AppliedSpecRevision: 1,
24+
PendingDelete: false,
25+
},
26+
},
27+
expected: GCPEnvStatusModel{
28+
Name: types.StringValue("test-gcp-env"),
29+
AppliedSpecRevision: types.Int64Value(1),
30+
PendingDelete: types.BoolValue(false),
31+
},
32+
},
33+
{
34+
name: "gcp env status with pending delete",
35+
input: sdk.GetGCPEnvStatus_GCPEnv{
36+
Name: "test-gcp-env-delete",
37+
SpecRevision: 5,
38+
Status: sdk.GetGCPEnvStatus_GCPEnv_Status{
39+
AppliedSpecRevision: 5,
40+
PendingDelete: true,
41+
},
42+
},
43+
expected: GCPEnvStatusModel{
44+
Name: types.StringValue("test-gcp-env-delete"),
45+
AppliedSpecRevision: types.Int64Value(5),
46+
PendingDelete: types.BoolValue(true),
47+
},
48+
},
49+
{
50+
name: "gcp env status with large revision numbers",
51+
input: sdk.GetGCPEnvStatus_GCPEnv{
52+
Name: "test-gcp-env-large",
53+
SpecRevision: 12345,
54+
Status: sdk.GetGCPEnvStatus_GCPEnv_Status{
55+
AppliedSpecRevision: 12345,
56+
PendingDelete: false,
57+
},
58+
},
59+
expected: GCPEnvStatusModel{
60+
Name: types.StringValue("test-gcp-env-large"),
61+
AppliedSpecRevision: types.Int64Value(12345),
62+
PendingDelete: types.BoolValue(false),
63+
},
64+
},
65+
{
66+
name: "gcp env status with zero revision",
67+
input: sdk.GetGCPEnvStatus_GCPEnv{
68+
Name: "test-gcp-env-zero",
69+
SpecRevision: 0,
70+
Status: sdk.GetGCPEnvStatus_GCPEnv_Status{
71+
AppliedSpecRevision: 0,
72+
PendingDelete: false,
73+
},
74+
},
75+
expected: GCPEnvStatusModel{
76+
Name: types.StringValue("test-gcp-env-zero"),
77+
AppliedSpecRevision: types.Int64Value(0),
78+
PendingDelete: types.BoolValue(false),
79+
},
80+
},
81+
}
82+
83+
for _, tt := range tests {
84+
t.Run(tt.name, func(t *testing.T) {
85+
model := &GCPEnvStatusModel{}
86+
model.toModel(tt.input)
87+
88+
assert.Equal(t, tt.expected.Name, model.Name)
89+
assert.Equal(t, tt.expected.AppliedSpecRevision, model.AppliedSpecRevision)
90+
assert.Equal(t, tt.expected.PendingDelete, model.PendingDelete)
91+
})
92+
}
93+
}

0 commit comments

Comments
 (0)