From 7a85934a5bb6e9f14901d2ae17d45bf04f90af2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Schmitz?= <152157960+bahkauv70@users.noreply.github.com> Date: Thu, 6 Mar 2025 09:37:21 +0100 Subject: [PATCH 1/2] chore: add nil checks and testcases --- .../cmd/rabbitmq/credentials/create/create.go | 16 ++++++- .../credentials/create/create_test.go | 48 +++++++++++++++++-- .../rabbitmq/credentials/describe/describe.go | 5 +- .../credentials/describe/describe_test.go | 35 ++++++++++++-- .../rabbitmq/credentials/list/list_test.go | 44 +++++++++++++++-- .../cmd/rabbitmq/instance/create/create.go | 6 +++ .../rabbitmq/instance/create/create_test.go | 36 ++++++++++++-- .../rabbitmq/instance/describe/describe.go | 27 +++++++---- .../instance/describe/describe_test.go | 44 +++++++++++++++-- internal/cmd/rabbitmq/instance/list/list.go | 13 ++++- .../cmd/rabbitmq/instance/list/list_test.go | 44 +++++++++++++++-- internal/cmd/rabbitmq/plans/plans.go | 20 ++++---- internal/cmd/rabbitmq/plans/plans_test.go | 44 +++++++++++++++-- 13 files changed, 333 insertions(+), 49 deletions(-) diff --git a/internal/cmd/rabbitmq/credentials/create/create.go b/internal/cmd/rabbitmq/credentials/create/create.go index 1a7cd75ad..bc4e069f4 100644 --- a/internal/cmd/rabbitmq/credentials/create/create.go +++ b/internal/cmd/rabbitmq/credentials/create/create.go @@ -78,7 +78,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create RabbitMQ credentials: %w", err) } - return outputResult(p, model, instanceLabel, resp) + return outputResult(p, *model, instanceLabel, resp) }, } configureFlags(cmd) @@ -122,8 +122,20 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.AP return req } -func outputResult(p *print.Printer, model *inputModel, instanceLabel string, resp *rabbitmq.CredentialsResponse) error { +func outputResult(p *print.Printer, model inputModel, instanceLabel string, resp *rabbitmq.CredentialsResponse) error { + if model.GlobalFlagModel == nil { + return fmt.Errorf("no global flags available") + } + if resp == nil { + return fmt.Errorf("no response available") + } + if !model.ShowPassword { + if resp.Raw == nil { + resp.Raw = &rabbitmq.RawCredentials{Credentials: &rabbitmq.Credentials{}} + } else if resp.Raw.Credentials == nil { + resp.Raw.Credentials = &rabbitmq.Credentials{} + } resp.Raw.Credentials.Password = utils.Ptr("hidden") } switch model.OutputFormat { diff --git a/internal/cmd/rabbitmq/credentials/create/create_test.go b/internal/cmd/rabbitmq/credentials/create/create_test.go index 494647b00..f12874f3e 100644 --- a/internal/cmd/rabbitmq/credentials/create/create_test.go +++ b/internal/cmd/rabbitmq/credentials/create/create_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/rabbitmq" ) @@ -200,3 +199,46 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + model inputModel + instanceLabel string + resp *rabbitmq.CredentialsResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{ + model: inputModel{ + GlobalFlagModel: &globalflags.GlobalFlagModel{}, + }, + instanceLabel: "", + resp: &rabbitmq.CredentialsResponse{}, + }, + wantErr: false, + }, + { + name: "no flags", + args: args{ + model: inputModel{}, + instanceLabel: "", + resp: &rabbitmq.CredentialsResponse{}, + }, + wantErr: true, + }, + } + 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.model, tt.args.instanceLabel, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/rabbitmq/credentials/describe/describe.go b/internal/cmd/rabbitmq/credentials/describe/describe.go index 990fcad69..85159848d 100644 --- a/internal/cmd/rabbitmq/credentials/describe/describe.go +++ b/internal/cmd/rabbitmq/credentials/describe/describe.go @@ -112,6 +112,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.AP } func outputResult(p *print.Printer, outputFormat string, credentials *rabbitmq.CredentialsResponse) error { + if credentials == nil { + return fmt.Errorf("no response passed") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(credentials, "", " ") @@ -131,7 +134,7 @@ func outputResult(p *print.Printer, outputFormat string, credentials *rabbitmq.C return nil default: table := tables.NewTable() - table.AddRow("ID", *credentials.Id) + table.AddRow("ID", utils.PtrString(credentials.Id)) table.AddSeparator() // The username field cannot be set by the user so we only display it if it's not returned empty if credentials.HasRaw() && credentials.Raw.Credentials != nil { diff --git a/internal/cmd/rabbitmq/credentials/describe/describe_test.go b/internal/cmd/rabbitmq/credentials/describe/describe_test.go index ac88bb829..ea024843f 100644 --- a/internal/cmd/rabbitmq/credentials/describe/describe_test.go +++ b/internal/cmd/rabbitmq/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/rabbitmq" ) @@ -243,3 +242,33 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + outputFormat string + credentials *rabbitmq.CredentialsResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{ + outputFormat: "", + credentials: &rabbitmq.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/rabbitmq/credentials/list/list_test.go b/internal/cmd/rabbitmq/credentials/list/list_test.go index 71263bdc0..431a51a08 100644 --- a/internal/cmd/rabbitmq/credentials/list/list_test.go +++ b/internal/cmd/rabbitmq/credentials/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/rabbitmq" ) @@ -207,3 +206,40 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + outputFormat string + credentials []rabbitmq.CredentialsListItem + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "non empty list with empty elements", + args: args{ + outputFormat: "", + credentials: []rabbitmq.CredentialsListItem{ + {}, + }, + }, + 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/rabbitmq/instance/create/create.go b/internal/cmd/rabbitmq/instance/create/create.go index 2810d24e8..716e7bf8b 100644 --- a/internal/cmd/rabbitmq/instance/create/create.go +++ b/internal/cmd/rabbitmq/instance/create/create.go @@ -257,6 +257,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient rabbitMQClie } func outputResult(p *print.Printer, model *inputModel, projectLabel, instanceId string, resp *rabbitmq.CreateInstanceResponse) error { + if model == nil { + return fmt.Errorf("no model passed") + } + if model.GlobalFlagModel == nil { + return fmt.Errorf("no globalflags passed") + } switch model.OutputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") diff --git a/internal/cmd/rabbitmq/instance/create/create_test.go b/internal/cmd/rabbitmq/instance/create/create_test.go index 0f3b165c6..de2ef85ee 100644 --- a/internal/cmd/rabbitmq/instance/create/create_test.go +++ b/internal/cmd/rabbitmq/instance/create/create_test.go @@ -5,13 +5,12 @@ import ( "fmt" "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/rabbitmq" ) @@ -488,3 +487,32 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + model inputModel + projectLabel string + instanceId string + resp *rabbitmq.CreateInstanceResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{model: inputModel{GlobalFlagModel: &globalflags.GlobalFlagModel{}}}, + 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.model, tt.args.projectLabel, tt.args.instanceId, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/rabbitmq/instance/describe/describe.go b/internal/cmd/rabbitmq/instance/describe/describe.go index 2aad472cd..c65f67ed3 100644 --- a/internal/cmd/rabbitmq/instance/describe/describe.go +++ b/internal/cmd/rabbitmq/instance/describe/describe.go @@ -100,6 +100,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.AP } func outputResult(p *print.Printer, outputFormat string, instance *rabbitmq.Instance) error { + if instance == nil { + return fmt.Errorf("no instance passed") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(instance, "", " ") @@ -123,18 +126,22 @@ func outputResult(p *print.Printer, outputFormat string, instance *rabbitmq.Inst table.AddSeparator() table.AddRow("NAME", utils.PtrString(instance.Name)) table.AddSeparator() - table.AddRow("LAST OPERATION TYPE", utils.PtrString(instance.LastOperation.Type)) - table.AddSeparator() - table.AddRow("LAST OPERATION STATE", utils.PtrString(instance.LastOperation.State)) - table.AddSeparator() + if lastOperation := instance.LastOperation; lastOperation != nil { + table.AddRow("LAST OPERATION TYPE", utils.PtrString(lastOperation.Type)) + table.AddSeparator() + table.AddRow("LAST OPERATION STATE", utils.PtrString(lastOperation.State)) + table.AddSeparator() + } table.AddRow("PLAN ID", utils.PtrString(instance.PlanId)) // Only show ACL if it's present and not empty - acl := (*instance.Parameters)[aclParameterKey] - aclStr, ok := acl.(string) - if ok { - if aclStr != "" { - table.AddSeparator() - table.AddRow("ACL", aclStr) + if parameters := instance.Parameters; parameters != nil { + acl := (*instance.Parameters)[aclParameterKey] + aclStr, ok := acl.(string) + if ok { + if aclStr != "" { + table.AddSeparator() + table.AddRow("ACL", aclStr) + } } } err := table.Display(p) diff --git a/internal/cmd/rabbitmq/instance/describe/describe_test.go b/internal/cmd/rabbitmq/instance/describe/describe_test.go index ff09ef0ae..0cd2f8f77 100644 --- a/internal/cmd/rabbitmq/instance/describe/describe_test.go +++ b/internal/cmd/rabbitmq/instance/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/rabbitmq" ) @@ -216,3 +215,42 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + outputFormat string + instance *rabbitmq.Instance + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{instance: &rabbitmq.Instance{}}, + wantErr: false, + }, + { + name: "empty parameters", + args: args{ + outputFormat: "", + instance: &rabbitmq.Instance{ + Parameters: &map[string]interface{}{ + "foo": nil, + }, + }, + }, + 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.instance); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/rabbitmq/instance/list/list.go b/internal/cmd/rabbitmq/instance/list/list.go index 3ffc1a146..3ade03661 100644 --- a/internal/cmd/rabbitmq/instance/list/list.go +++ b/internal/cmd/rabbitmq/instance/list/list.go @@ -152,11 +152,20 @@ func outputResult(p *print.Printer, outputFormat string, instances []rabbitmq.In table.SetHeader("ID", "NAME", "LAST OPERATION TYPE", "LAST OPERATION STATE") for i := range instances { instance := instances[i] + var ( + opType, opState string + ) + if lastOperation := instance.LastOperation; lastOperation != nil { + opType = utils.PtrString(lastOperation.Type) + opState = utils.PtrString(lastOperation.State) + } else { + opType, opState = "n/a", "n/a" + } table.AddRow( utils.PtrString(instance.InstanceId), utils.PtrString(instance.Name), - utils.PtrString(instance.LastOperation.Type), - utils.PtrString(instance.LastOperation.State), + opType, + opState, ) } err := table.Display(p) diff --git a/internal/cmd/rabbitmq/instance/list/list_test.go b/internal/cmd/rabbitmq/instance/list/list_test.go index 004e9f436..50bdcf4bd 100644 --- a/internal/cmd/rabbitmq/instance/list/list_test.go +++ b/internal/cmd/rabbitmq/instance/list/list_test.go @@ -4,14 +4,13 @@ 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/spf13/cobra" + "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/rabbitmq" ) @@ -186,3 +185,40 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + outputFormat string + instances []rabbitmq.Instance + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "slice with empty element", + args: args{ + outputFormat: "", + instances: []rabbitmq.Instance{ + {}, + }, + }, + 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.instances); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/rabbitmq/plans/plans.go b/internal/cmd/rabbitmq/plans/plans.go index 6156c0724..51dda4133 100644 --- a/internal/cmd/rabbitmq/plans/plans.go +++ b/internal/cmd/rabbitmq/plans/plans.go @@ -153,15 +153,17 @@ func outputResult(p *print.Printer, outputFormat string, plans []rabbitmq.Offeri table.SetHeader("OFFERING NAME", "VERSION", "ID", "NAME", "DESCRIPTION") for i := range plans { o := plans[i] - for j := range *o.Plans { - plan := (*o.Plans)[j] - table.AddRow( - utils.PtrString(o.Name), - utils.PtrString(o.Version), - utils.PtrString(plan.Id), - utils.PtrString(plan.Name), - utils.PtrString(plan.Description), - ) + if o.Plans != nil { + for j := range *o.Plans { + plan := (*o.Plans)[j] + table.AddRow( + utils.PtrString(o.Name), + utils.PtrString(o.Version), + utils.PtrString(plan.Id), + utils.PtrString(plan.Name), + utils.PtrString(plan.Description), + ) + } } table.AddSeparator() } diff --git a/internal/cmd/rabbitmq/plans/plans_test.go b/internal/cmd/rabbitmq/plans/plans_test.go index 8fa1378d7..ab8966a20 100644 --- a/internal/cmd/rabbitmq/plans/plans_test.go +++ b/internal/cmd/rabbitmq/plans/plans_test.go @@ -4,14 +4,13 @@ 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/spf13/cobra" + "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/rabbitmq" ) @@ -186,3 +185,40 @@ func TestBuildRequest(t *testing.T) { }) } } + +func Test_outputResult(t *testing.T) { + type args struct { + outputFormat string + plans []rabbitmq.Offering + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "slice with empty element", + args: args{ + outputFormat: "", + plans: []rabbitmq.Offering{ + {}, + }, + }, + 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.plans); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} From 3162c87d0fd7dc06275601063a05708b4e70d52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Schmitz?= <152157960+bahkauv70@users.noreply.github.com> Date: Thu, 6 Mar 2025 11:21:39 +0100 Subject: [PATCH 2/2] fix: integrate review findings --- .../rabbitmq/credentials/create/create_test.go | 10 ++++++++++ .../credentials/describe/describe_test.go | 7 +++++++ .../cmd/rabbitmq/instance/create/create.go | 4 ++++ .../rabbitmq/instance/create/create_test.go | 18 ++++++++++++++++-- .../instance/describe/describe_test.go | 5 +++++ internal/cmd/rabbitmq/plans/plans.go | 2 +- 6 files changed, 43 insertions(+), 3 deletions(-) diff --git a/internal/cmd/rabbitmq/credentials/create/create_test.go b/internal/cmd/rabbitmq/credentials/create/create_test.go index f12874f3e..1c053d029 100644 --- a/internal/cmd/rabbitmq/credentials/create/create_test.go +++ b/internal/cmd/rabbitmq/credentials/create/create_test.go @@ -222,6 +222,16 @@ func Test_outputResult(t *testing.T) { }, wantErr: false, }, + { + name: "nil response", + args: args{ + model: inputModel{ + GlobalFlagModel: &globalflags.GlobalFlagModel{}, + }, + instanceLabel: "", + }, + wantErr: true, + }, { name: "no flags", args: args{ diff --git a/internal/cmd/rabbitmq/credentials/describe/describe_test.go b/internal/cmd/rabbitmq/credentials/describe/describe_test.go index ea024843f..ef4d23107 100644 --- a/internal/cmd/rabbitmq/credentials/describe/describe_test.go +++ b/internal/cmd/rabbitmq/credentials/describe/describe_test.go @@ -261,6 +261,13 @@ func Test_outputResult(t *testing.T) { }, wantErr: false, }, + { + name: "empty", + args: args{ + outputFormat: "", + }, + wantErr: true, + }, } p := print.NewPrinter() p.Cmd = NewCmd(p) diff --git a/internal/cmd/rabbitmq/instance/create/create.go b/internal/cmd/rabbitmq/instance/create/create.go index 716e7bf8b..3ea8bfda1 100644 --- a/internal/cmd/rabbitmq/instance/create/create.go +++ b/internal/cmd/rabbitmq/instance/create/create.go @@ -263,6 +263,10 @@ func outputResult(p *print.Printer, model *inputModel, projectLabel, instanceId if model.GlobalFlagModel == nil { return fmt.Errorf("no globalflags passed") } + if resp == nil { + return fmt.Errorf("no response passed") + } + switch model.OutputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") diff --git a/internal/cmd/rabbitmq/instance/create/create_test.go b/internal/cmd/rabbitmq/instance/create/create_test.go index de2ef85ee..5faeb3257 100644 --- a/internal/cmd/rabbitmq/instance/create/create_test.go +++ b/internal/cmd/rabbitmq/instance/create/create_test.go @@ -501,10 +501,24 @@ func Test_outputResult(t *testing.T) { wantErr bool }{ { - name: "empty", - args: args{model: inputModel{GlobalFlagModel: &globalflags.GlobalFlagModel{}}}, + name: "empty", + args: args{ + model: inputModel{ + GlobalFlagModel: &globalflags.GlobalFlagModel{}, + }, + resp: &rabbitmq.CreateInstanceResponse{}, + }, wantErr: false, }, + { + name: "empty", + args: args{ + model: inputModel{ + GlobalFlagModel: &globalflags.GlobalFlagModel{}, + }, + }, + wantErr: true, + }, } p := print.NewPrinter() p.Cmd = NewCmd(p) diff --git a/internal/cmd/rabbitmq/instance/describe/describe_test.go b/internal/cmd/rabbitmq/instance/describe/describe_test.go index 0cd2f8f77..4b9420995 100644 --- a/internal/cmd/rabbitmq/instance/describe/describe_test.go +++ b/internal/cmd/rabbitmq/instance/describe/describe_test.go @@ -231,6 +231,11 @@ func Test_outputResult(t *testing.T) { args: args{instance: &rabbitmq.Instance{}}, wantErr: false, }, + { + name: "nil instance", + args: args{}, + wantErr: true, + }, { name: "empty parameters", args: args{ diff --git a/internal/cmd/rabbitmq/plans/plans.go b/internal/cmd/rabbitmq/plans/plans.go index 51dda4133..1b84f3029 100644 --- a/internal/cmd/rabbitmq/plans/plans.go +++ b/internal/cmd/rabbitmq/plans/plans.go @@ -164,8 +164,8 @@ func outputResult(p *print.Printer, outputFormat string, plans []rabbitmq.Offeri utils.PtrString(plan.Description), ) } + table.AddSeparator() } - table.AddSeparator() } table.EnableAutoMergeOnColumns(1, 2) err := table.Display(p)