diff --git a/internal/cmd/beta/security-group/create/create.go b/internal/cmd/beta/security-group/create/create.go index 1f7072e29..af66e0783 100644 --- a/internal/cmd/beta/security-group/create/create.go +++ b/internal/cmd/beta/security-group/create/create.go @@ -72,7 +72,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("create security group: %w", err) } - if err := outputResult(p, model, group); err != nil { + if err := outputResult(p, model.OutputFormat, *model.Name, *group); err != nil { return err } @@ -144,8 +144,8 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli return request.CreateSecurityGroupPayload(payload) } -func outputResult(p *print.Printer, model *inputModel, resp *iaas.SecurityGroup) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat, name string, resp iaas.SecurityGroup) error { + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { @@ -163,7 +163,7 @@ func outputResult(p *print.Printer, model *inputModel, resp *iaas.SecurityGroup) return nil default: - p.Outputf("Created security group %q\n", *model.Name) + p.Outputf("Created security group %q\n", name) return nil } } diff --git a/internal/cmd/beta/security-group/create/create_test.go b/internal/cmd/beta/security-group/create/create_test.go index 1833e5c57..6a6a02898 100644 --- a/internal/cmd/beta/security-group/create/create_test.go +++ b/internal/cmd/beta/security-group/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" ) @@ -264,3 +263,31 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + resp iaas.SecurityGroup + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + 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.name, tt.args.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/security-group/describe/describe.go b/internal/cmd/beta/security-group/describe/describe.go index 2feb18203..2ea0084dc 100644 --- a/internal/cmd/beta/security-group/describe/describe.go +++ b/internal/cmd/beta/security-group/describe/describe.go @@ -57,7 +57,7 @@ func NewCmd(p *print.Printer) *cobra.Command { return fmt.Errorf("get security group: %w", err) } - if err := outputResult(p, model, group); err != nil { + if err := outputResult(p, model.OutputFormat, group); err != nil { return err } @@ -96,8 +96,11 @@ func parseInput(p *print.Printer, cmd *cobra.Command, cliArgs []string) (*inputM return &model, nil } -func outputResult(p *print.Printer, model *inputModel, resp *iaas.SecurityGroup) error { - switch model.OutputFormat { +func outputResult(p *print.Printer, outputFormat string, resp *iaas.SecurityGroup) error { + if resp == nil { + return fmt.Errorf("security group response is empty") + } + switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(resp, "", " ") if err != nil { diff --git a/internal/cmd/beta/security-group/describe/describe_test.go b/internal/cmd/beta/security-group/describe/describe_test.go index 13a98fc84..6deaf042f 100644 --- a/internal/cmd/beta/security-group/describe/describe_test.go +++ b/internal/cmd/beta/security-group/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" ) @@ -192,3 +191,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + resp *iaas.SecurityGroup + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "only security group as argument", + args: args{ + resp: &iaas.SecurityGroup{}, + }, + 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.resp); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/security-group/list/list_test.go b/internal/cmd/beta/security-group/list/list_test.go index c6f3a0c93..d19adf3a0 100644 --- a/internal/cmd/beta/security-group/list/list_test.go +++ b/internal/cmd/beta/security-group/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" ) @@ -205,3 +204,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + items []iaas.SecurityGroup + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + 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.items); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/security-group/rule/create/create.go b/internal/cmd/beta/security-group/rule/create/create.go index 2d8958e27..d5e4ab6d4 100644 --- a/internal/cmd/beta/security-group/rule/create/create.go +++ b/internal/cmd/beta/security-group/rule/create/create.go @@ -219,6 +219,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli } func outputResult(p *print.Printer, model *inputModel, projectLabel, securityGroupName string, securityGroupRule *iaas.SecurityGroupRule) error { + if securityGroupRule == nil { + return fmt.Errorf("security group rule is empty") + } switch model.OutputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(securityGroupRule, "", " ") diff --git a/internal/cmd/beta/security-group/rule/create/create_test.go b/internal/cmd/beta/security-group/rule/create/create_test.go index 5d0fd2098..1a0024129 100644 --- a/internal/cmd/beta/security-group/rule/create/create_test.go +++ b/internal/cmd/beta/security-group/rule/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" ) @@ -333,3 +332,40 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + model *inputModel + projectLabel string + securityGroupName string + securityGroupRule *iaas.SecurityGroupRule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "only security group rule", + args: args{ + model: fixtureInputModel(), + securityGroupRule: &iaas.SecurityGroupRule{}, + }, + 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.securityGroupName, tt.args.securityGroupRule); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/security-group/rule/describe/describe.go b/internal/cmd/beta/security-group/rule/describe/describe.go index 5c1ef384f..2189d736f 100644 --- a/internal/cmd/beta/security-group/rule/describe/describe.go +++ b/internal/cmd/beta/security-group/rule/describe/describe.go @@ -113,6 +113,9 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *iaas.APICli } func outputResult(p *print.Printer, outputFormat string, securityGroupRule *iaas.SecurityGroupRule) error { + if securityGroupRule == nil { + return fmt.Errorf("security group rule is empty") + } switch outputFormat { case print.JSONOutputFormat: details, err := json.MarshalIndent(securityGroupRule, "", " ") diff --git a/internal/cmd/beta/security-group/rule/describe/describe_test.go b/internal/cmd/beta/security-group/rule/describe/describe_test.go index 6463ef1fc..03060fcb2 100644 --- a/internal/cmd/beta/security-group/rule/describe/describe_test.go +++ b/internal/cmd/beta/security-group/rule/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-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" ) @@ -244,3 +243,37 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + securityGroupRule *iaas.SecurityGroupRule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + wantErr: true, + }, + { + name: "only security group rule as argument", + args: args{ + securityGroupRule: &iaas.SecurityGroupRule{}, + }, + 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.securityGroupRule); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/cmd/beta/security-group/rule/list/list_test.go b/internal/cmd/beta/security-group/rule/list/list_test.go index 016039ed7..f72f89897 100644 --- a/internal/cmd/beta/security-group/rule/list/list_test.go +++ b/internal/cmd/beta/security-group/rule/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" ) @@ -212,3 +211,30 @@ func TestBuildRequest(t *testing.T) { }) } } + +func TestOutputResult(t *testing.T) { + type args struct { + outputFormat string + securityGroupRules []iaas.SecurityGroupRule + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "empty", + args: args{}, + 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.securityGroupRules); (err != nil) != tt.wantErr { + t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +}