@@ -11,6 +11,7 @@ import (
1111 iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2alpha1api"
1212
1313 "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
14+ "github.com/stackitcloud/stackit-cli/internal/pkg/print"
1415 "github.com/stackitcloud/stackit-cli/internal/pkg/testparams"
1516 "github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1617)
@@ -113,33 +114,78 @@ func TestParseInput(t *testing.T) {
113114}
114115
115116func TestBuildRequest (t * testing.T ) {
116- ctx := context .Background ()
117- client := & iaas.APIClient {
118- DefaultAPI : & iaas.DefaultAPIService {},
119- }
120-
121- for _ , nameservers := range [][]string {nil , {}, {"8.8.8.8" , "8.8.4.4" }} {
117+ buildRequestInputModelDefault := func (opts ... func (m * inputModel )) * inputModel {
122118 model := & inputModel {
123119 GlobalFlagModel : & globalflags.GlobalFlagModel {
124120 ProjectId : testProjectId ,
125121 Region : "eu02" ,
126122 },
127123 VpcId : testVpcId ,
128- IPv4DefaultNameservers : nameservers ,
124+ IPv4DefaultNameservers : [] string { "8.8.8.8" , "8.8.4.4" } ,
129125 }
130126
131- payload := iaas.CreateVPCRegionPayload {}
132- if nameservers != nil {
133- payload .Ipv4 = & iaas.RegionalVPCIPv4 {
134- DefaultNameservers : nameservers ,
135- }
127+ for _ , opt := range opts {
128+ opt (model )
129+ }
130+
131+ return model
132+ }
133+
134+ buildRequestPayloadDefault := func (opts ... func (p * iaas.CreateVPCRegionPayload )) iaas.CreateVPCRegionPayload {
135+ payload := iaas.CreateVPCRegionPayload {
136+ Ipv4 : & iaas.RegionalVPCIPv4 {
137+ DefaultNameservers : []string {"8.8.8.8" , "8.8.4.4" },
138+ },
136139 }
137140
138- want := client .DefaultAPI .CreateVPCRegion (ctx , testProjectId , testVpcId , "eu02" ).CreateVPCRegionPayload (payload )
139- got := buildRequest (ctx , model , client )
140- if diff := cmp .Diff (want , got , cmp .AllowUnexported (want ), cmpopts .EquateComparable (ctx , iaas.DefaultAPIService {})); diff != "" {
141- t .Fatalf ("request mismatch (-want +got): %s" , diff )
141+ for _ , opt := range opts {
142+ opt (& payload )
142143 }
144+
145+ return payload
146+ }
147+
148+ tests := []struct {
149+ description string
150+ inputModel * inputModel
151+ wantPayload iaas.CreateVPCRegionPayload
152+ }{
153+ {
154+ description : "default" ,
155+ inputModel : buildRequestInputModelDefault (),
156+ wantPayload : buildRequestPayloadDefault (),
157+ },
158+ {
159+ description : "nameservers is empty" ,
160+ inputModel : buildRequestInputModelDefault (func (m * inputModel ) {
161+ m .IPv4DefaultNameservers = []string {}
162+ }),
163+ wantPayload : buildRequestPayloadDefault (func (p * iaas.CreateVPCRegionPayload ) {
164+ p .Ipv4 .DefaultNameservers = []string {}
165+ }),
166+ },
167+ {
168+ description : "nameservers is nil" ,
169+ inputModel : buildRequestInputModelDefault (func (m * inputModel ) {
170+ m .IPv4DefaultNameservers = nil
171+ }),
172+ wantPayload : buildRequestPayloadDefault (func (p * iaas.CreateVPCRegionPayload ) {
173+ p .Ipv4 = nil
174+ }),
175+ },
176+ }
177+
178+ for _ , tt := range tests {
179+ t .Run (tt .description , func (t * testing.T ) {
180+ ctx := context .Background ()
181+ client := & iaas.DefaultAPIServiceMock {}
182+
183+ want := client .CreateVPCRegion (ctx , testProjectId , testVpcId , "eu02" ).CreateVPCRegionPayload (tt .wantPayload )
184+ got := buildRequest (ctx , tt .inputModel , client )
185+ if diff := cmp .Diff (want , got , cmp .AllowUnexported (want ), cmpopts .EquateComparable (ctx , iaas.DefaultAPIService {})); diff != "" {
186+ t .Fatalf ("request mismatch (-want +got): %s" , diff )
187+ }
188+ })
143189 }
144190}
145191
0 commit comments