From d9a853fe9fa1fab559187830b471dc0c2ed829f5 Mon Sep 17 00:00:00 2001 From: Alexander Dahmen Date: Fri, 21 Feb 2025 10:52:30 +0100 Subject: [PATCH] chore(load-balancer): Add nil pointer checks and tests for the outputResult functions Signed-off-by: Alexander Dahmen --- .../cmd/load-balancer/describe/describe.go | 3 + .../load-balancer/describe/describe_test.go | 39 +++++++++- .../generate-payload/generate_payload.go | 10 ++- .../generate-payload/generate_payload_test.go | 76 +++++++++++++++++-- internal/cmd/load-balancer/list/list.go | 4 +- internal/cmd/load-balancer/list/list_test.go | 41 +++++++++- .../observability-credentials/add/add.go | 8 +- .../observability-credentials/add/add_test.go | 49 +++++++++++- .../describe/describe.go | 3 +- .../describe/describe_test.go | 46 ++++++++++- .../list/list_test.go | 41 +++++++++- internal/cmd/load-balancer/quota/quota.go | 3 + .../cmd/load-balancer/quota/quota_test.go | 42 +++++++++- .../target-pool/describe/describe.go | 7 +- .../target-pool/describe/describe_test.go | 43 ++++++++++- 15 files changed, 373 insertions(+), 42 deletions(-) diff --git a/internal/cmd/load-balancer/describe/describe.go b/internal/cmd/load-balancer/describe/describe.go index 0a0ae869e..0c759d545 100644 --- a/internal/cmd/load-balancer/describe/describe.go +++ b/internal/cmd/load-balancer/describe/describe.go @@ -99,6 +99,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalance } func outputResult(p *print.Printer, outputFormat string, loadBalancer *loadbalancer.LoadBalancer) error { + if loadBalancer == nil { + return fmt.Errorf("loadbalancer response is empty") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(loadBalancer, "", " ") diff --git a/internal/cmd/load-balancer/describe/describe_test.go b/internal/cmd/load-balancer/describe/describe_test.go index 33960ecca..24720dac8 100644 --- a/internal/cmd/load-balancer/describe/describe_test.go +++ b/internal/cmd/load-balancer/describe/describe_test.go @@ -4,12 +4,11 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) @@ -206,3 +205,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + loadBalancer *loadbalancer.LoadBalancer + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "only loadbalancer as argument", + args: args{ + loadBalancer: &loadbalancer.LoadBalancer{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.loadBalancer); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/generate-payload/generate_payload.go b/internal/cmd/load-balancer/generate-payload/generate_payload.go index 4b13af079..b947aa629 100644 --- a/internal/cmd/load-balancer/generate-payload/generate_payload.go +++ b/internal/cmd/load-balancer/generate-payload/generate_payload.go @@ -213,13 +213,16 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalance } func outputCreateResult(p *print.Printer, filePath *string, payload *loadbalancer.CreateLoadBalancerPayload) error { + if payload == nil { + return fmt.Errorf("loadbalancer payload is empty") + } payloadBytes, err := json.MarshalIndent(*payload, "", " ") if err != nil { return fmt.Errorf("marshal create load balancer payload: %w", err) } if filePath != nil { - err = fileutils.WriteToFile(*filePath, string(payloadBytes)) + err = fileutils.WriteToFile(utils.PtrString(filePath), string(payloadBytes)) if err != nil { return fmt.Errorf("write create load balancer payload to the file: %w", err) } @@ -231,13 +234,16 @@ func outputCreateResult(p *print.Printer, filePath *string, payload *loadbalance } func outputUpdateResult(p *print.Printer, filePath *string, payload *loadbalancer.UpdateLoadBalancerPayload) error { + if payload == nil { + return fmt.Errorf("loadbalancer payload is empty") + } payloadBytes, err := json.MarshalIndent(*payload, "", " ") if err != nil { return fmt.Errorf("marshal update load balancer payload: %w", err) } if filePath != nil { - err = fileutils.WriteToFile(*filePath, string(payloadBytes)) + err = fileutils.WriteToFile(utils.PtrString(filePath), string(payloadBytes)) if err != nil { return fmt.Errorf("write update load balancer payload to the file: %w", err) } diff --git a/internal/cmd/load-balancer/generate-payload/generate_payload_test.go b/internal/cmd/load-balancer/generate-payload/generate_payload_test.go index b8f48fc69..e8dd6dd2e 100644 --- a/internal/cmd/load-balancer/generate-payload/generate_payload_test.go +++ b/internal/cmd/load-balancer/generate-payload/generate_payload_test.go @@ -4,14 +4,12 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/stackitcloud/stackit-cli/internal/pkg/utils" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" - + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" + "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) @@ -310,3 +308,71 @@ func TestModifyListeners(t *testing.T) { }) } } + +func TestOutputCreateResult(t *testing.T) { + type args struct { + filePath *string + payload *loadbalancer.CreateLoadBalancerPayload + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "only loadbalancer payload as argument", + args: args{ + payload: &loadbalancer.CreateLoadBalancerPayload{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputCreateResult(p, tt.args.filePath, tt.args.payload); (err != nil) != tt.wantErr { + t.Errorf("outputCreateResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestOutputUpdateResult(t *testing.T) { + type args struct { + filePath *string + payload *loadbalancer.UpdateLoadBalancerPayload + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "only loadbalancer payload as argument", + args: args{ + payload: &loadbalancer.UpdateLoadBalancerPayload{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputUpdateResult(p, tt.args.filePath, tt.args.payload); (err != nil) != tt.wantErr { + t.Errorf("outputUpdateResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/list/list.go b/internal/cmd/load-balancer/list/list.go index ecd1b4212..fa2036c29 100644 --- a/internal/cmd/load-balancer/list/list.go +++ b/internal/cmd/load-balancer/list/list.go @@ -159,8 +159,8 @@ func outputResult(p *print.Printer, outputFormat string, loadBalancers []loadbal utils.PtrString(l.Name), utils.PtrString(l.Status), externalAdress, - len(*l.Listeners), - len(*l.TargetPools), + len(utils.PtrString(l.Listeners)), + len(utils.PtrString(l.TargetPools)), ) } err := table.Display(p) diff --git a/internal/cmd/load-balancer/list/list_test.go b/internal/cmd/load-balancer/list/list_test.go index 0f035066d..2ad30db36 100644 --- a/internal/cmd/load-balancer/list/list_test.go +++ b/internal/cmd/load-balancer/list/list_test.go @@ -4,13 +4,12 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/stackitcloud/stackit-cli/internal/pkg/utils" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" + "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) @@ -183,3 +182,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + loadBalancers []loadbalancer.LoadBalancer + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty loadbalancer in loadbalancers slice", + args: args{ + loadBalancers: []loadbalancer.LoadBalancer{{}}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.loadBalancers); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/observability-credentials/add/add.go b/internal/cmd/load-balancer/observability-credentials/add/add.go index a188bcdd7..77dfbf48e 100644 --- a/internal/cmd/load-balancer/observability-credentials/add/add.go +++ b/internal/cmd/load-balancer/observability-credentials/add/add.go @@ -91,7 +91,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("add Load Balancer observability credentials: %w", err) } - return outputResult(p, model, projectLabel, resp) + return outputResult(p, model.OutputFormat, projectLabel, resp) }, } configureFlags(cmd) @@ -144,12 +144,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalance return req } -func outputResult(p *print.Printer, model *inputModel, projectLabel string, resp *loadbalancer.CreateCredentialsResponse) error { - if resp.Credential == nil { +func outputResult(p *print.Printer, outputFormat, projectLabel string, resp *loadbalancer.CreateCredentialsResponse) error { + if resp == nil || resp.Credential == nil { return fmt.Errorf("nil observability credentials response") } - switch model.OutputFormat { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { diff --git a/internal/cmd/load-balancer/observability-credentials/add/add_test.go b/internal/cmd/load-balancer/observability-credentials/add/add_test.go index 85fc6b7d6..a9cfb8719 100644 --- a/internal/cmd/load-balancer/observability-credentials/add/add_test.go +++ b/internal/cmd/load-balancer/observability-credentials/add/add_test.go @@ -4,14 +4,13 @@ import ( "context" "testing" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/google/uuid" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" - - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" - "github.com/google/uuid" ) var projectIdFlag = globalflags.ProjectIdFlag @@ -193,3 +192,45 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + projectLabel string + resp *loadbalancer.CreateCredentialsResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "credentials response with empty Credential", + args: args{ + resp: &loadbalancer.CreateCredentialsResponse{}, + }, + wantErr: true, + }, + { + name: "only credentials response as argument", + args: args{ + resp: &loadbalancer.CreateCredentialsResponse{Credential: &loadbalancer.CredentialsResponse{}}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/observability-credentials/describe/describe.go b/internal/cmd/load-balancer/observability-credentials/describe/describe.go index 68781a17e..e16b9eb4f 100644 --- a/internal/cmd/load-balancer/observability-credentials/describe/describe.go +++ b/internal/cmd/load-balancer/observability-credentials/describe/describe.go @@ -115,8 +115,7 @@ func outputResult(p *print.Printer, outputFormat string, credentials *loadbalanc return nil default: if credentials == nil || credentials.Credential == nil { - p.Info("No credentials found") - return nil + return fmt.Errorf("credentials response is empty") } table := tables.NewTable() diff --git a/internal/cmd/load-balancer/observability-credentials/describe/describe_test.go b/internal/cmd/load-balancer/observability-credentials/describe/describe_test.go index d916923fd..05f8a8d64 100644 --- a/internal/cmd/load-balancer/observability-credentials/describe/describe_test.go +++ b/internal/cmd/load-balancer/observability-credentials/describe/describe_test.go @@ -4,12 +4,11 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) @@ -211,3 +210,44 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + credentials *loadbalancer.GetCredentialsResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "credentials response with empty Credential", + args: args{ + credentials: &loadbalancer.GetCredentialsResponse{}, + }, + wantErr: true, + }, + { + name: "only credentials as argument", + args: args{ + credentials: &loadbalancer.GetCredentialsResponse{Credential: &loadbalancer.CredentialsResponse{}}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.credentials); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/observability-credentials/list/list_test.go b/internal/cmd/load-balancer/observability-credentials/list/list_test.go index 736adf134..e37d0b3c2 100644 --- a/internal/cmd/load-balancer/observability-credentials/list/list_test.go +++ b/internal/cmd/load-balancer/observability-credentials/list/list_test.go @@ -4,14 +4,13 @@ import ( "context" "testing" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/google/uuid" "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" "github.com/stackitcloud/stackit-cli/internal/pkg/print" lbUtils "github.com/stackitcloud/stackit-cli/internal/pkg/services/load-balancer/utils" "github.com/stackitcloud/stackit-cli/internal/pkg/utils" - - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" - "github.com/google/uuid" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) @@ -269,3 +268,37 @@ func TestGetFilterOp(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + credentials []loadbalancer.CredentialsResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "empty credentials response in loadbalancers slice", + args: args{ + credentials: []loadbalancer.CredentialsResponse{{}}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.credentials); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/quota/quota.go b/internal/cmd/load-balancer/quota/quota.go index beecd9db2..fb99fb6f7 100644 --- a/internal/cmd/load-balancer/quota/quota.go +++ b/internal/cmd/load-balancer/quota/quota.go @@ -86,6 +86,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalance } func outputResult(p *print.Printer, outputFormat string, quota *loadbalancer.GetQuotaResponse) error { + if quota == nil { + return fmt.Errorf("quota response is empty") + } switch outputFormat { case print.PrettyOutputFormat: diff --git a/internal/cmd/load-balancer/quota/quota_test.go b/internal/cmd/load-balancer/quota/quota_test.go index 47bc747c9..b6938c379 100644 --- a/internal/cmd/load-balancer/quota/quota_test.go +++ b/internal/cmd/load-balancer/quota/quota_test.go @@ -4,12 +4,11 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) @@ -163,3 +162,40 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + quota *loadbalancer.GetQuotaResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{ + outputFormat: print.PrettyOutputFormat, // default output format is json + }, + wantErr: true, + }, + { + name: "only quota as argument", + args: args{ + outputFormat: print.PrettyOutputFormat, // default output format is json + quota: &loadbalancer.GetQuotaResponse{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.quota); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/load-balancer/target-pool/describe/describe.go b/internal/cmd/load-balancer/target-pool/describe/describe.go index 3ffa3af70..70af7ce15 100644 --- a/internal/cmd/load-balancer/target-pool/describe/describe.go +++ b/internal/cmd/load-balancer/target-pool/describe/describe.go @@ -120,6 +120,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *loadbalance } func outputResult(p *print.Printer, outputFormat string, targetPool loadbalancer.TargetPool, listener *loadbalancer.Listener) error { + if listener == nil { + return fmt.Errorf("listener response is empty") + } output := struct { *loadbalancer.TargetPool Listener *loadbalancer.Listener `json:"attached_listener"` @@ -191,9 +194,9 @@ func outputResultAsTable(p *print.Printer, targetPool loadbalancer.TargetPool, l } table := tables.NewTable() - table.AddRow("NAME", *targetPool.Name) + table.AddRow("NAME", utils.PtrString(targetPool.Name)) table.AddSeparator() - table.AddRow("TARGET PORT", *targetPool.TargetPort) + table.AddRow("TARGET PORT", utils.PtrString(targetPool.TargetPort)) table.AddSeparator() table.AddRow("ATTACHED LISTENER", listenerStr) table.AddSeparator() diff --git a/internal/cmd/load-balancer/target-pool/describe/describe_test.go b/internal/cmd/load-balancer/target-pool/describe/describe_test.go index 9127dc29c..502a965f8 100644 --- a/internal/cmd/load-balancer/target-pool/describe/describe_test.go +++ b/internal/cmd/load-balancer/target-pool/describe/describe_test.go @@ -4,13 +4,12 @@ import ( "context" "testing" - "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" - "github.com/stackitcloud/stackit-cli/internal/pkg/print" - "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" - "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags" + "github.com/stackitcloud/stackit-cli/internal/pkg/print" + "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer" ) var projectIdFlag = globalflags.ProjectIdFlag @@ -217,3 +216,39 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + targetPool loadbalancer.TargetPool + listener *loadbalancer.Listener + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "listener and target pool as argument", + args: args{ + targetPool: loadbalancer.TargetPool{}, + listener: &loadbalancer.Listener{}, + }, + wantErr: false, + }, + } + p := print.NewPrinter() + p.Cmd = NewCmd(p) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := outputResult(p, tt.args.outputFormat, tt.args.targetPool, tt.args.listener); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +}