diff --git a/internal/cmd/object-storage/bucket/create/create.go b/internal/cmd/object-storage/bucket/create/create.go index 4695a1416..e96a4206c 100644 --- a/internal/cmd/object-storage/bucket/create/create.go +++ b/internal/cmd/object-storage/bucket/create/create.go @@ -90,7 +90,7 @@ func NewCmd(p *print.Printer) *cobra.Command { s.Stop() } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, model.Async, model.BucketName, resp) }, } return cmd @@ -126,8 +126,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora return req } -func outputResult(p *print.Printer, model *inputModel, resp *objectstorage.CreateBucketResponse) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat string, async bool, bucketName string, resp *objectstorage.CreateBucketResponse) error { + if resp == nil { + return fmt.Errorf("create bucket response is empty") + } + + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -146,10 +150,10 @@ func outputResult(p *print.Printer, model *inputModel, resp *objectstorage.Creat return nil default: operationState := "Created" - if model.Async { + if async { operationState = "Triggered creation of" } - p.Outputf("%s bucket %q\n", operationState, model.BucketName) + p.Outputf("%s bucket %q\n", operationState, bucketName) return nil } } diff --git a/internal/cmd/object-storage/bucket/create/create_test.go b/internal/cmd/object-storage/bucket/create/create_test.go index 42a2bf0a5..49a089342 100644 --- a/internal/cmd/object-storage/bucket/create/create_test.go +++ b/internal/cmd/object-storage/bucket/create/create_test.go @@ -214,3 +214,39 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + async bool + bucketName string + createBucketResponse *objectstorage.CreateBucketResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "set empty create bucket response", + args: args{ + createBucketResponse: &objectstorage.CreateBucketResponse{}, + }, + 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.async, tt.args.bucketName, tt.args.createBucketResponse); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/object-storage/bucket/describe/describe.go b/internal/cmd/object-storage/bucket/describe/describe.go index aad7f7fbd..23a9e7011 100644 --- a/internal/cmd/object-storage/bucket/describe/describe.go +++ b/internal/cmd/object-storage/bucket/describe/describe.go @@ -98,6 +98,10 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora } func outputResult(p *print.Printer, outputFormat string, bucket *objectstorage.Bucket) error { + if bucket == nil { + return fmt.Errorf("bucket is empty") + } + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(bucket, "", " ") diff --git a/internal/cmd/object-storage/bucket/describe/describe_test.go b/internal/cmd/object-storage/bucket/describe/describe_test.go index ec6702dae..d233fc17f 100644 --- a/internal/cmd/object-storage/bucket/describe/describe_test.go +++ b/internal/cmd/object-storage/bucket/describe/describe_test.go @@ -214,3 +214,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + bucket *objectstorage.Bucket + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "set empty bucket", + args: args{ + bucket: &objectstorage.Bucket{}, + }, + 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.bucket); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/object-storage/bucket/list/list.go b/internal/cmd/object-storage/bucket/list/list.go index 66f94a399..19466184b 100644 --- a/internal/cmd/object-storage/bucket/list/list.go +++ b/internal/cmd/object-storage/bucket/list/list.go @@ -130,6 +130,10 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora } func outputResult(p *print.Printer, outputFormat string, buckets []objectstorage.Bucket) error { + if buckets == nil { + return fmt.Errorf("buckets is empty") + } + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(buckets, "", " ") diff --git a/internal/cmd/object-storage/bucket/list/list_test.go b/internal/cmd/object-storage/bucket/list/list_test.go index 8f4d655bb..31664679f 100644 --- a/internal/cmd/object-storage/bucket/list/list_test.go +++ b/internal/cmd/object-storage/bucket/list/list_test.go @@ -190,3 +190,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + buckets []objectstorage.Bucket + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "set empty create bucket response", + args: args{ + buckets: []objectstorage.Bucket{}, + }, + 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.buckets); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/object-storage/credentials-group/create/create.go b/internal/cmd/object-storage/credentials-group/create/create.go index cb30ede3f..55530ccc7 100644 --- a/internal/cmd/object-storage/credentials-group/create/create.go +++ b/internal/cmd/object-storage/credentials-group/create/create.go @@ -67,7 +67,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Object Storage credentials group: %w", err) } - return outputResult(p, model, resp) + return outputResult(p, model.OutputFormat, resp) }, } configureFlags(cmd) @@ -112,8 +112,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora return req } -func outputResult(p *print.Printer, model *inputModel, resp *objectstorage.CreateCredentialsGroupResponse) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat string, resp *objectstorage.CreateCredentialsGroupResponse) error { + if resp == nil || resp.CredentialsGroup == nil { + return fmt.Errorf("create createndials group response is empty") + } + + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { diff --git a/internal/cmd/object-storage/credentials-group/create/create_test.go b/internal/cmd/object-storage/credentials-group/create/create_test.go index f7b1a447b..60dd53fbd 100644 --- a/internal/cmd/object-storage/credentials-group/create/create_test.go +++ b/internal/cmd/object-storage/credentials-group/create/create_test.go @@ -192,3 +192,46 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + createCredentialsGroupResponse *objectstorage.CreateCredentialsGroupResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "set empty create credentials group response", + args: args{ + createCredentialsGroupResponse: &objectstorage.CreateCredentialsGroupResponse{}, + }, + wantErr: true, + }, + { + name: "set create credentials group response", + args: args{ + createCredentialsGroupResponse: &objectstorage.CreateCredentialsGroupResponse{ + CredentialsGroup: &objectstorage.CredentialsGroup{}, + }, + }, + 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.createCredentialsGroupResponse); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/object-storage/credentials-group/list/list_test.go b/internal/cmd/object-storage/credentials-group/list/list_test.go index 7c9580330..2a7ee01ff 100644 --- a/internal/cmd/object-storage/credentials-group/list/list_test.go +++ b/internal/cmd/object-storage/credentials-group/list/list_test.go @@ -187,3 +187,44 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + credentialsGroups []objectstorage.CredentialsGroup + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "set empty credentials groups", + args: args{ + credentialsGroups: []objectstorage.CredentialsGroup{}, + }, + wantErr: false, + }, + { + name: "set empty credentials group", + args: args{ + credentialsGroups: []objectstorage.CredentialsGroup{{}}, + }, + 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.credentialsGroups); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/object-storage/credentials/create/create.go b/internal/cmd/object-storage/credentials/create/create.go index 8e4944d87..71c854dd3 100644 --- a/internal/cmd/object-storage/credentials/create/create.go +++ b/internal/cmd/object-storage/credentials/create/create.go @@ -81,7 +81,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create Object Storage credentials: %w", err) } - return outputResult(p, model, credentialsGroupLabel, resp) + return outputResult(p, model.OutputFormat, credentialsGroupLabel, resp) }, } configureFlags(cmd) @@ -137,8 +137,12 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora return req } -func outputResult(p *print.Printer, model *inputModel, credentialsGroupLabel string, resp *objectstorage.CreateAccessKeyResponse) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, credentialsGroupLabel string, resp *objectstorage.CreateAccessKeyResponse) error { + if resp == nil { + return fmt.Errorf("create access key response is empty") + } + + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { diff --git a/internal/cmd/object-storage/credentials/create/create_test.go b/internal/cmd/object-storage/credentials/create/create_test.go index c26ddf0ee..03257beda 100644 --- a/internal/cmd/object-storage/credentials/create/create_test.go +++ b/internal/cmd/object-storage/credentials/create/create_test.go @@ -251,3 +251,38 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + credentialsGroupLabel string + createAccessKeyResponse *objectstorage.CreateAccessKeyResponse + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "set empty create access key response", + args: args{ + createAccessKeyResponse: &objectstorage.CreateAccessKeyResponse{}, + }, + 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.credentialsGroupLabel, tt.args.createAccessKeyResponse); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/object-storage/credentials/list/list_test.go b/internal/cmd/object-storage/credentials/list/list_test.go index b778e5dc1..a50921b69 100644 --- a/internal/cmd/object-storage/credentials/list/list_test.go +++ b/internal/cmd/object-storage/credentials/list/list_test.go @@ -212,3 +212,44 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + credentials []objectstorage.AccessKey + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: false, + }, + { + name: "set empty credentials", + args: args{ + credentials: []objectstorage.AccessKey{}, + }, + wantErr: false, + }, + { + name: "set empty access key", + args: args{ + credentials: []objectstorage.AccessKey{{}}, + }, + 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) + } + }) + } +}