Skip to content

Commit bb61f05

Browse files
authored
fix: stackit beta network-area commands - add nil pointer checks and tests for the outputResult functions (#606)
* add nil pointer checks *nadd tests for the outputResult functions within the network-area commands
1 parent ca7fa42 commit bb61f05

File tree

25 files changed

+462
-26
lines changed

25 files changed

+462
-26
lines changed

internal/cmd/beta/network-area/create/create.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ func NewCmd(p *print.Printer) *cobra.Command {
8383
if err != nil {
8484
p.Debug(print.ErrorLevel, "get organization name: %v", err)
8585
orgLabel = *model.OrganizationId
86+
} else if orgLabel == "" {
87+
orgLabel = *model.OrganizationId
8688
}
8789
} else {
8890
p.Debug(print.ErrorLevel, "configure resource manager client: %v", err)
@@ -103,7 +105,7 @@ func NewCmd(p *print.Printer) *cobra.Command {
103105
return fmt.Errorf("create network area: %w", err)
104106
}
105107

106-
return outputResult(p, model, orgLabel, resp)
108+
return outputResult(p, model.OutputFormat, orgLabel, resp)
107109
},
108110
}
109111
configureFlags(cmd)
@@ -178,8 +180,11 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
178180
return req.CreateNetworkAreaPayload(payload)
179181
}
180182

181-
func outputResult(p *print.Printer, model *inputModel, orgLabel string, networkArea *iaas.NetworkArea) error {
182-
switch model.OutputFormat {
183+
func outputResult(p *print.Printer, outputFormat, orgLabel string, networkArea *iaas.NetworkArea) error {
184+
if networkArea == nil {
185+
return fmt.Errorf("network area is nil")
186+
}
187+
switch outputFormat {
183188
case print.JSONOutputFormat:
184189
details, err := json.MarshalIndent(networkArea, "", " ")
185190
if err != nil {

internal/cmd/beta/network-area/create/create_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,38 @@ func TestBuildRequest(t *testing.T) {
246246
})
247247
}
248248
}
249+
250+
func Test_outputResult(t *testing.T) {
251+
type args struct {
252+
outputFormat string
253+
orgLabel string
254+
networkArea *iaas.NetworkArea
255+
}
256+
tests := []struct {
257+
name string
258+
args args
259+
wantErr bool
260+
}{
261+
{
262+
name: "empty",
263+
args: args{},
264+
wantErr: true,
265+
},
266+
{
267+
name: "set empty network area",
268+
args: args{
269+
networkArea: &iaas.NetworkArea{},
270+
},
271+
wantErr: false,
272+
},
273+
}
274+
p := print.NewPrinter()
275+
p.Cmd = NewCmd(p)
276+
for _, tt := range tests {
277+
t.Run(tt.name, func(t *testing.T) {
278+
if err := outputResult(p, tt.args.outputFormat, tt.args.orgLabel, tt.args.networkArea); (err != nil) != tt.wantErr {
279+
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
280+
}
281+
})
282+
}
283+
}

internal/cmd/beta/network-area/delete/delete.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ func NewCmd(p *print.Printer) *cobra.Command {
6262
if err != nil {
6363
p.Debug(print.ErrorLevel, "get network area name: %v", err)
6464
networkAreaLabel = model.AreaId
65+
} else if networkAreaLabel == "" {
66+
networkAreaLabel = model.AreaId
6567
}
6668

6769
if !model.AssumeYes {

internal/cmd/beta/network-area/describe/describe.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
127127
}
128128

129129
func outputResult(p *print.Printer, outputFormat string, networkArea *iaas.NetworkArea, attachedProjects []string) error {
130+
if networkArea == nil {
131+
return fmt.Errorf("network area is nil")
132+
}
130133
switch outputFormat {
131134
case print.JSONOutputFormat:
132135
details, err := json.MarshalIndent(networkArea, "", " ")
@@ -146,16 +149,19 @@ func outputResult(p *print.Printer, outputFormat string, networkArea *iaas.Netwo
146149
return nil
147150
default:
148151
var routes []string
149-
if networkArea.Ipv4.Routes != nil {
150-
for _, route := range *networkArea.Ipv4.Routes {
151-
routes = append(routes, fmt.Sprintf("next hop: %s\nprefix: %s", *route.Nexthop, *route.Prefix))
152+
var networkRanges []string
153+
154+
if networkArea.Ipv4 != nil {
155+
if networkArea.Ipv4.Routes != nil {
156+
for _, route := range *networkArea.Ipv4.Routes {
157+
routes = append(routes, fmt.Sprintf("next hop: %s\nprefix: %s", *route.Nexthop, *route.Prefix))
158+
}
152159
}
153-
}
154160

155-
var networkRanges []string
156-
if networkArea.Ipv4.NetworkRanges != nil {
157-
for _, networkRange := range *networkArea.Ipv4.NetworkRanges {
158-
networkRanges = append(networkRanges, *networkRange.Prefix)
161+
if networkArea.Ipv4.NetworkRanges != nil {
162+
for _, networkRange := range *networkArea.Ipv4.NetworkRanges {
163+
networkRanges = append(networkRanges, *networkRange.Prefix)
164+
}
159165
}
160166
}
161167

internal/cmd/beta/network-area/describe/describe_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,38 @@ func TestBuildRequest(t *testing.T) {
227227
})
228228
}
229229
}
230+
231+
func TestOutputResult(t *testing.T) {
232+
type args struct {
233+
outputFormat string
234+
networkArea *iaas.NetworkArea
235+
attachedProjects []string
236+
}
237+
tests := []struct {
238+
name string
239+
args args
240+
wantErr bool
241+
}{
242+
{
243+
name: "empty",
244+
args: args{},
245+
wantErr: true,
246+
},
247+
{
248+
name: "set networkArea",
249+
args: args{
250+
networkArea: &iaas.NetworkArea{},
251+
},
252+
wantErr: false,
253+
},
254+
}
255+
p := print.NewPrinter()
256+
p.Cmd = NewCmd(p)
257+
for _, tt := range tests {
258+
t.Run(tt.name, func(t *testing.T) {
259+
if err := outputResult(p, tt.args.outputFormat, tt.args.networkArea, tt.args.attachedProjects); (err != nil) != tt.wantErr {
260+
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
261+
}
262+
})
263+
}
264+
}

internal/cmd/beta/network-area/list/list.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ func NewCmd(p *print.Printer) *cobra.Command {
8080
if err != nil {
8181
p.Debug(print.ErrorLevel, "get organization name: %v", err)
8282
orgLabel = *model.OrganizationId
83+
} else if orgLabel == "" {
84+
orgLabel = *model.OrganizationId
8385
}
8486
} else {
8587
p.Debug(print.ErrorLevel, "configure resource manager client: %v", err)

internal/cmd/beta/network-area/list/list_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,3 +186,44 @@ func TestBuildRequest(t *testing.T) {
186186
})
187187
}
188188
}
189+
190+
func TestOutputResult(t *testing.T) {
191+
type args struct {
192+
outputFormat string
193+
networkAreas []iaas.NetworkArea
194+
}
195+
tests := []struct {
196+
name string
197+
args args
198+
wantErr bool
199+
}{
200+
{
201+
name: "empty",
202+
args: args{},
203+
wantErr: false,
204+
},
205+
{
206+
name: "empty network areas slice",
207+
args: args{
208+
networkAreas: []iaas.NetworkArea{},
209+
},
210+
wantErr: false,
211+
},
212+
{
213+
name: "empty network area in network areas slice",
214+
args: args{
215+
networkAreas: []iaas.NetworkArea{{}},
216+
},
217+
wantErr: false,
218+
},
219+
}
220+
p := print.NewPrinter()
221+
p.Cmd = NewCmd(p)
222+
for _, tt := range tests {
223+
t.Run(tt.name, func(t *testing.T) {
224+
if err := outputResult(p, tt.args.outputFormat, tt.args.networkAreas); (err != nil) != tt.wantErr {
225+
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
226+
}
227+
})
228+
}
229+
}

internal/cmd/beta/network-area/network-range/create/create.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func NewCmd(p *print.Printer) *cobra.Command {
8888
return err
8989
}
9090

91-
return outputResult(p, model, networkAreaLabel, networkRange)
91+
return outputResult(p, model.OutputFormat, networkAreaLabel, networkRange)
9292
},
9393
}
9494
configureFlags(cmd)
@@ -138,8 +138,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli
138138
return req.CreateNetworkAreaRangePayload(payload)
139139
}
140140

141-
func outputResult(p *print.Printer, model *inputModel, networkAreaLabel string, networkRange iaas.NetworkRange) error {
142-
switch model.OutputFormat {
141+
func outputResult(p *print.Printer, outputFormat, networkAreaLabel string, networkRange iaas.NetworkRange) error {
142+
switch outputFormat {
143143
case print.JSONOutputFormat:
144144
details, err := json.MarshalIndent(networkRange, "", " ")
145145
if err != nil {

internal/cmd/beta/network-area/network-range/create/create_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,3 +215,38 @@ func TestBuildRequest(t *testing.T) {
215215
})
216216
}
217217
}
218+
219+
func TestOutputResult(t *testing.T) {
220+
type args struct {
221+
outputFormat string
222+
networkAreaLabel string
223+
networkRange iaas.NetworkRange
224+
}
225+
tests := []struct {
226+
name string
227+
args args
228+
wantErr bool
229+
}{
230+
{
231+
name: "empty",
232+
args: args{},
233+
wantErr: false,
234+
},
235+
{
236+
name: "empty network range",
237+
args: args{
238+
networkRange: iaas.NetworkRange{},
239+
},
240+
wantErr: false,
241+
},
242+
}
243+
p := print.NewPrinter()
244+
p.Cmd = NewCmd(p)
245+
for _, tt := range tests {
246+
t.Run(tt.name, func(t *testing.T) {
247+
if err := outputResult(p, tt.args.outputFormat, tt.args.networkAreaLabel, tt.args.networkRange); (err != nil) != tt.wantErr {
248+
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
249+
}
250+
})
251+
}
252+
}

internal/cmd/beta/network-area/network-range/delete/delete.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,15 @@ func NewCmd(p *print.Printer) *cobra.Command {
6060
if err != nil {
6161
p.Debug(print.ErrorLevel, "get network area name: %v", err)
6262
networkAreaLabel = *model.NetworkAreaId
63+
} else if networkAreaLabel == "" {
64+
networkAreaLabel = *model.NetworkAreaId
6365
}
6466
networkRangeLabel, err := iaasUtils.GetNetworkRangePrefix(ctx, apiClient, *model.OrganizationId, *model.NetworkAreaId, model.NetworkRangeId)
6567
if err != nil {
6668
p.Debug(print.ErrorLevel, "get network range prefix: %v", err)
6769
networkRangeLabel = model.NetworkRangeId
70+
} else if networkRangeLabel == "" {
71+
networkRangeLabel = model.NetworkRangeId
6872
}
6973

7074
if !model.AssumeYes {

0 commit comments

Comments
 (0)