diff --git a/internal/cmd/beta/volume/create/create.go b/internal/cmd/beta/volume/create/create.go index 38cfdbe4f..a00446f90 100644 --- a/internal/cmd/beta/volume/create/create.go +++ b/internal/cmd/beta/volume/create/create.go @@ -199,6 +199,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli } func outputResult(p *print.Printer, model *inputModel, projectLabel string, volume *iaas.Volume) error { + if volume == nil { + return fmt.Errorf("volume response is empty") + } switch model.OutputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(volume, "", " ") diff --git a/internal/cmd/beta/volume/create/create_test.go b/internal/cmd/beta/volume/create/create_test.go index c9fecec3a..71f3e1697 100644 --- a/internal/cmd/beta/volume/create/create_test.go +++ b/internal/cmd/beta/volume/create/create_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/iaas" ) @@ -284,3 +283,39 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + model *inputModel + projectLabel string + volume *iaas.Volume + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "volume as argument", + args: args{ + model: fixtureInputModel(), + volume: &iaas.Volume{}, + }, + 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.volume); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/volume/delete/delete.go b/internal/cmd/beta/volume/delete/delete.go index ca52fa148..068c0f2ea 100644 --- a/internal/cmd/beta/volume/delete/delete.go +++ b/internal/cmd/beta/volume/delete/delete.go @@ -56,10 +56,12 @@ func NewCmd(p *print.Printer) *cobra.Command { return err } - volumeLabel, err := iaasUtils.GetVolumeName(ctx, apiClient, model.ProjectId, model.VolumeId) + volumeLabel := model.VolumeId + volumeName, err := iaasUtils.GetVolumeName(ctx, apiClient, model.ProjectId, model.VolumeId) if err != nil { p.Debug(print.ErrorLevel, "get volume name: %v", err) - volumeLabel = model.VolumeId + } else if volumeName != "" { + volumeLabel = volumeName } if !model.AssumeYes { diff --git a/internal/cmd/beta/volume/describe/describe.go b/internal/cmd/beta/volume/describe/describe.go index 4dab40860..b69b32332 100644 --- a/internal/cmd/beta/volume/describe/describe.go +++ b/internal/cmd/beta/volume/describe/describe.go @@ -102,6 +102,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli } func outputResult(p *print.Printer, outputFormat string, volume *iaas.Volume) error { + if volume == nil { + return fmt.Errorf("volume response is empty") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(volume, "", " ") diff --git a/internal/cmd/beta/volume/describe/describe_test.go b/internal/cmd/beta/volume/describe/describe_test.go index 8f3fcdd57..3de0f688b 100644 --- a/internal/cmd/beta/volume/describe/describe_test.go +++ b/internal/cmd/beta/volume/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/iaas" ) @@ -216,3 +215,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + volume *iaas.Volume + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "volume as argument", + args: args{ + volume: &iaas.Volume{}, + }, + 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.volume); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/volume/list/list_test.go b/internal/cmd/beta/volume/list/list_test.go index ea1b60ad3..77cc3808b 100644 --- a/internal/cmd/beta/volume/list/list_test.go +++ b/internal/cmd/beta/volume/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/iaas" ) @@ -202,3 +201,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + volumes []iaas.Volume + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "set empty volume", + args: args{ + volumes: []iaas.Volume{{}}, + }, + 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.volumes); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/volume/performance-class/describe/describe.go b/internal/cmd/beta/volume/performance-class/describe/describe.go index 6ed6c261b..9d8537858 100644 --- a/internal/cmd/beta/volume/performance-class/describe/describe.go +++ b/internal/cmd/beta/volume/performance-class/describe/describe.go @@ -102,6 +102,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli } func outputResult(p *print.Printer, outputFormat string, performanceClass *iaas.VolumePerformanceClass) error { + if performanceClass == nil { + return fmt.Errorf("performanceClass response is empty") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(performanceClass, "", " ") diff --git a/internal/cmd/beta/volume/performance-class/describe/describe_test.go b/internal/cmd/beta/volume/performance-class/describe/describe_test.go index 2a43beaf1..90ba0da3c 100644 --- a/internal/cmd/beta/volume/performance-class/describe/describe_test.go +++ b/internal/cmd/beta/volume/performance-class/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/iaas" ) @@ -210,3 +209,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + performanceClass *iaas.VolumePerformanceClass + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "volume performance class as argument", + args: args{ + performanceClass: &iaas.VolumePerformanceClass{}, + }, + 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.performanceClass); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/volume/performance-class/list/list_test.go b/internal/cmd/beta/volume/performance-class/list/list_test.go index 91c2041bb..9e23bbdfd 100644 --- a/internal/cmd/beta/volume/performance-class/list/list_test.go +++ b/internal/cmd/beta/volume/performance-class/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/iaas" ) @@ -202,3 +201,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + performanceClasses []iaas.VolumePerformanceClass + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "set empty volume", + args: args{ + performanceClasses: []iaas.VolumePerformanceClass{{}}, + }, + 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.performanceClasses); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/volume/update/update.go b/internal/cmd/beta/volume/update/update.go index c8a49a617..ffc5273cb 100644 --- a/internal/cmd/beta/volume/update/update.go +++ b/internal/cmd/beta/volume/update/update.go @@ -90,7 +90,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("update volume: %w", err) } - return outputResult(p, model, volumeLabel, resp) + return outputResult(p, model.OutputFormat, volumeLabel, resp) }, } configureFlags(cmd) @@ -152,8 +152,11 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return req.UpdateVolumePayload(payload) } -func outputResult(p *print.Printer, model *inputModel, volumeLabel string, volume *iaas.Volume) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, volumeLabel string, volume *iaas.Volume) error { + if volume == nil { + return fmt.Errorf("volume response is empty") + } + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(volume, "", " ") if err != nil { diff --git a/internal/cmd/beta/volume/update/update_test.go b/internal/cmd/beta/volume/update/update_test.go index 283bfda43..cdfed4017 100644 --- a/internal/cmd/beta/volume/update/update_test.go +++ b/internal/cmd/beta/volume/update/update_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/iaas" ) @@ -255,3 +254,38 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + volumeLabel string + volume *iaas.Volume + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "volume as argument", + args: args{ + volume: &iaas.Volume{}, + }, + 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.volumeLabel, tt.args.volume); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +}