Skip to content

Commit a14c016

Browse files
authored
fix(rabbitmq): print valid JSON/YAML output for list cmds (#1043)
relates to STACKITCLI-271 / #893
1 parent 03ca810 commit a14c016

File tree

13 files changed

+131
-141
lines changed

13 files changed

+131
-141
lines changed

internal/cmd/rabbitmq/credentials/create/create_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import (
1414
"github.com/stackitcloud/stackit-sdk-go/services/rabbitmq"
1515
)
1616

17-
var projectIdFlag = globalflags.ProjectIdFlag
18-
1917
type testCtxKey struct{}
2018

2119
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
@@ -25,8 +23,8 @@ var testInstanceId = uuid.NewString()
2523

2624
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
2725
flagValues := map[string]string{
28-
projectIdFlag: testProjectId,
29-
instanceIdFlag: testInstanceId,
26+
globalflags.ProjectIdFlag: testProjectId,
27+
instanceIdFlag: testInstanceId,
3028
}
3129
for _, mod := range mods {
3230
mod(flagValues)
@@ -88,21 +86,21 @@ func TestParseInput(t *testing.T) {
8886
{
8987
description: "project id missing",
9088
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
91-
delete(flagValues, projectIdFlag)
89+
delete(flagValues, globalflags.ProjectIdFlag)
9290
}),
9391
isValid: false,
9492
},
9593
{
9694
description: "project id invalid 1",
9795
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
98-
flagValues[projectIdFlag] = ""
96+
flagValues[globalflags.ProjectIdFlag] = ""
9997
}),
10098
isValid: false,
10199
},
102100
{
103101
description: "project id invalid 2",
104102
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
105-
flagValues[projectIdFlag] = "invalid-uuid"
103+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
106104
}),
107105
isValid: false,
108106
},

internal/cmd/rabbitmq/credentials/delete/delete_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import (
1313
"github.com/stackitcloud/stackit-sdk-go/services/rabbitmq"
1414
)
1515

16-
var projectIdFlag = globalflags.ProjectIdFlag
17-
1816
type testCtxKey struct{}
1917

2018
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
@@ -35,8 +33,8 @@ func fixtureArgValues(mods ...func(argValues []string)) []string {
3533

3634
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
3735
flagValues := map[string]string{
38-
projectIdFlag: testProjectId,
39-
instanceIdFlag: testInstanceId,
36+
globalflags.ProjectIdFlag: testProjectId,
37+
instanceIdFlag: testInstanceId,
4038
}
4139
for _, mod := range mods {
4240
mod(flagValues)
@@ -104,23 +102,23 @@ func TestParseInput(t *testing.T) {
104102
description: "project id missing",
105103
argValues: fixtureArgValues(),
106104
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
107-
delete(flagValues, projectIdFlag)
105+
delete(flagValues, globalflags.ProjectIdFlag)
108106
}),
109107
isValid: false,
110108
},
111109
{
112110
description: "project id invalid 1",
113111
argValues: fixtureArgValues(),
114112
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
115-
flagValues[projectIdFlag] = ""
113+
flagValues[globalflags.ProjectIdFlag] = ""
116114
}),
117115
isValid: false,
118116
},
119117
{
120118
description: "project id invalid 2",
121119
argValues: fixtureArgValues(),
122120
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
123-
flagValues[projectIdFlag] = "invalid-uuid"
121+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
124122
}),
125123
isValid: false,
126124
},

internal/cmd/rabbitmq/credentials/describe/describe_test.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import (
1414
"github.com/stackitcloud/stackit-sdk-go/services/rabbitmq"
1515
)
1616

17-
var projectIdFlag = globalflags.ProjectIdFlag
18-
1917
type testCtxKey struct{}
2018

2119
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
@@ -36,8 +34,8 @@ func fixtureArgValues(mods ...func(argValues []string)) []string {
3634

3735
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
3836
flagValues := map[string]string{
39-
projectIdFlag: testProjectId,
40-
instanceIdFlag: testInstanceId,
37+
globalflags.ProjectIdFlag: testProjectId,
38+
instanceIdFlag: testInstanceId,
4139
}
4240
for _, mod := range mods {
4341
mod(flagValues)
@@ -105,23 +103,23 @@ func TestParseInput(t *testing.T) {
105103
description: "project id missing",
106104
argValues: fixtureArgValues(),
107105
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
108-
delete(flagValues, projectIdFlag)
106+
delete(flagValues, globalflags.ProjectIdFlag)
109107
}),
110108
isValid: false,
111109
},
112110
{
113111
description: "project id invalid 1",
114112
argValues: fixtureArgValues(),
115113
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
116-
flagValues[projectIdFlag] = ""
114+
flagValues[globalflags.ProjectIdFlag] = ""
117115
}),
118116
isValid: false,
119117
},
120118
{
121119
description: "project id invalid 2",
122120
argValues: fixtureArgValues(),
123121
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
124-
flagValues[projectIdFlag] = "invalid-uuid"
122+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
125123
}),
126124
isValid: false,
127125
},

internal/cmd/rabbitmq/credentials/list/list.go

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,22 +66,20 @@ func NewCmd(params *params.CmdParams) *cobra.Command {
6666
if err != nil {
6767
return fmt.Errorf("list RabbitMQ credentials: %w", err)
6868
}
69-
credentials := *resp.CredentialsList
70-
if len(credentials) == 0 {
71-
instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
72-
if err != nil {
73-
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
74-
instanceLabel = model.InstanceId
75-
}
76-
params.Printer.Info("No credentials found for instance %q\n", instanceLabel)
77-
return nil
69+
credentials := resp.GetCredentialsList()
70+
71+
instanceLabel, err := rabbitmqUtils.GetInstanceName(ctx, apiClient, model.ProjectId, model.InstanceId)
72+
if err != nil {
73+
params.Printer.Debug(print.ErrorLevel, "get instance name: %v", err)
74+
instanceLabel = model.InstanceId
7875
}
7976

8077
// Truncate output
8178
if model.Limit != nil && len(credentials) > int(*model.Limit) {
8279
credentials = credentials[:*model.Limit]
8380
}
84-
return outputResult(params.Printer, model.OutputFormat, credentials)
81+
82+
return outputResult(params.Printer, model.OutputFormat, instanceLabel, credentials)
8583
},
8684
}
8785
configureFlags(cmd)
@@ -125,8 +123,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *rabbitmq.AP
125123
return req
126124
}
127125

128-
func outputResult(p *print.Printer, outputFormat string, credentials []rabbitmq.CredentialsListItem) error {
126+
func outputResult(p *print.Printer, outputFormat, instanceLabel string, credentials []rabbitmq.CredentialsListItem) error {
129127
return p.OutputResult(outputFormat, credentials, func() error {
128+
if len(credentials) == 0 {
129+
p.Outputf("No credentials found for instance %q\n", instanceLabel)
130+
return nil
131+
}
132+
130133
table := tables.NewTable()
131134
table.SetHeader("ID")
132135
for i := range credentials {

internal/cmd/rabbitmq/credentials/list/list_test.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ import (
1515
"github.com/stackitcloud/stackit-sdk-go/services/rabbitmq"
1616
)
1717

18-
var projectIdFlag = globalflags.ProjectIdFlag
19-
2018
type testCtxKey struct{}
2119

2220
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
@@ -26,9 +24,9 @@ var testInstanceId = uuid.NewString()
2624

2725
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
2826
flagValues := map[string]string{
29-
projectIdFlag: testProjectId,
30-
instanceIdFlag: testInstanceId,
31-
limitFlag: "10",
27+
globalflags.ProjectIdFlag: testProjectId,
28+
instanceIdFlag: testInstanceId,
29+
limitFlag: "10",
3230
}
3331
for _, mod := range mods {
3432
mod(flagValues)
@@ -81,21 +79,21 @@ func TestParseInput(t *testing.T) {
8179
{
8280
description: "project id missing",
8381
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
84-
delete(flagValues, projectIdFlag)
82+
delete(flagValues, globalflags.ProjectIdFlag)
8583
}),
8684
isValid: false,
8785
},
8886
{
8987
description: "project id invalid 1",
9088
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
91-
flagValues[projectIdFlag] = ""
89+
flagValues[globalflags.ProjectIdFlag] = ""
9290
}),
9391
isValid: false,
9492
},
9593
{
9694
description: "project id invalid 2",
9795
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
98-
flagValues[projectIdFlag] = "invalid-uuid"
96+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
9997
}),
10098
isValid: false,
10199
},
@@ -173,8 +171,9 @@ func TestBuildRequest(t *testing.T) {
173171

174172
func Test_outputResult(t *testing.T) {
175173
type args struct {
176-
outputFormat string
177-
credentials []rabbitmq.CredentialsListItem
174+
outputFormat string
175+
instanceLabel string
176+
credentials []rabbitmq.CredentialsListItem
178177
}
179178
tests := []struct {
180179
name string
@@ -201,7 +200,7 @@ func Test_outputResult(t *testing.T) {
201200
p.Cmd = NewCmd(&params.CmdParams{Printer: p})
202201
for _, tt := range tests {
203202
t.Run(tt.name, func(t *testing.T) {
204-
if err := outputResult(p, tt.args.outputFormat, tt.args.credentials); (err != nil) != tt.wantErr {
203+
if err := outputResult(p, tt.args.outputFormat, tt.args.instanceLabel, tt.args.credentials); (err != nil) != tt.wantErr {
205204
t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr)
206205
}
207206
})

internal/cmd/rabbitmq/instance/create/create_test.go

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import (
1717
"github.com/stackitcloud/stackit-sdk-go/services/rabbitmq"
1818
)
1919

20-
var projectIdFlag = globalflags.ProjectIdFlag
21-
2220
type testCtxKey struct{}
2321

2422
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
@@ -46,17 +44,17 @@ var testMonitoringInstanceId = uuid.NewString()
4644

4745
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
4846
flagValues := map[string]string{
49-
projectIdFlag: testProjectId,
50-
instanceNameFlag: "example-name",
51-
enableMonitoringFlag: "true",
52-
graphiteFlag: "example-graphite",
53-
metricsFrequencyFlag: "100",
54-
metricsPrefixFlag: "example-prefix",
55-
monitoringInstanceIdFlag: testMonitoringInstanceId,
56-
pluginFlag: "example-plugin",
57-
sgwAclFlag: "198.51.100.14/24",
58-
syslogFlag: "example-syslog",
59-
planIdFlag: testPlanId,
47+
globalflags.ProjectIdFlag: testProjectId,
48+
instanceNameFlag: "example-name",
49+
enableMonitoringFlag: "true",
50+
graphiteFlag: "example-graphite",
51+
metricsFrequencyFlag: "100",
52+
metricsPrefixFlag: "example-prefix",
53+
monitoringInstanceIdFlag: testMonitoringInstanceId,
54+
pluginFlag: "example-plugin",
55+
sgwAclFlag: "198.51.100.14/24",
56+
syslogFlag: "example-syslog",
57+
planIdFlag: testPlanId,
6058
}
6159
for _, mod := range mods {
6260
mod(flagValues)
@@ -148,9 +146,9 @@ func TestParseInput(t *testing.T) {
148146
{
149147
description: "required fields only",
150148
flagValues: map[string]string{
151-
projectIdFlag: testProjectId,
152-
instanceNameFlag: "example-name",
153-
planIdFlag: testPlanId,
149+
globalflags.ProjectIdFlag: testProjectId,
150+
instanceNameFlag: "example-name",
151+
planIdFlag: testPlanId,
154152
},
155153
isValid: true,
156154
expectedModel: &inputModel{
@@ -165,13 +163,13 @@ func TestParseInput(t *testing.T) {
165163
{
166164
description: "zero values",
167165
flagValues: map[string]string{
168-
projectIdFlag: testProjectId,
169-
planIdFlag: testPlanId,
170-
instanceNameFlag: "",
171-
enableMonitoringFlag: "false",
172-
graphiteFlag: "",
173-
metricsFrequencyFlag: "0",
174-
metricsPrefixFlag: "",
166+
globalflags.ProjectIdFlag: testProjectId,
167+
planIdFlag: testPlanId,
168+
instanceNameFlag: "",
169+
enableMonitoringFlag: "false",
170+
graphiteFlag: "",
171+
metricsFrequencyFlag: "0",
172+
metricsPrefixFlag: "",
175173
},
176174
isValid: true,
177175
expectedModel: &inputModel{
@@ -190,21 +188,21 @@ func TestParseInput(t *testing.T) {
190188
{
191189
description: "project id missing",
192190
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
193-
delete(flagValues, projectIdFlag)
191+
delete(flagValues, globalflags.ProjectIdFlag)
194192
}),
195193
isValid: false,
196194
},
197195
{
198196
description: "project id invalid 1",
199197
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
200-
flagValues[projectIdFlag] = ""
198+
flagValues[globalflags.ProjectIdFlag] = ""
201199
}),
202200
isValid: false,
203201
},
204202
{
205203
description: "project id invalid 2",
206204
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
207-
flagValues[projectIdFlag] = "invalid-uuid"
205+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
208206
}),
209207
isValid: false,
210208
},

internal/cmd/rabbitmq/instance/delete/delete_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ import (
1313
"github.com/stackitcloud/stackit-sdk-go/services/rabbitmq"
1414
)
1515

16-
var projectIdFlag = globalflags.ProjectIdFlag
17-
1816
type testCtxKey struct{}
1917

2018
var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo")
@@ -34,7 +32,7 @@ func fixtureArgValues(mods ...func(argValues []string)) []string {
3432

3533
func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string {
3634
flagValues := map[string]string{
37-
projectIdFlag: testProjectId,
35+
globalflags.ProjectIdFlag: testProjectId,
3836
}
3937
for _, mod := range mods {
4038
mod(flagValues)
@@ -101,23 +99,23 @@ func TestParseInput(t *testing.T) {
10199
description: "project id missing",
102100
argValues: fixtureArgValues(),
103101
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
104-
delete(flagValues, projectIdFlag)
102+
delete(flagValues, globalflags.ProjectIdFlag)
105103
}),
106104
isValid: false,
107105
},
108106
{
109107
description: "project id invalid 1",
110108
argValues: fixtureArgValues(),
111109
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
112-
flagValues[projectIdFlag] = ""
110+
flagValues[globalflags.ProjectIdFlag] = ""
113111
}),
114112
isValid: false,
115113
},
116114
{
117115
description: "project id invalid 2",
118116
argValues: fixtureArgValues(),
119117
flagValues: fixtureFlagValues(func(flagValues map[string]string) {
120-
flagValues[projectIdFlag] = "invalid-uuid"
118+
flagValues[globalflags.ProjectIdFlag] = "invalid-uuid"
121119
}),
122120
isValid: false,
123121
},

0 commit comments

Comments
 (0)