diff --git a/internal/cmd/object-storage/bucket/create/create_test.go b/internal/cmd/object-storage/bucket/create/create_test.go index b6e926cd2..976dab8a0 100644 --- a/internal/cmd/object-storage/bucket/create/create_test.go +++ b/internal/cmd/object-storage/bucket/create/create_test.go @@ -15,16 +15,16 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testRegion = "eu01" -var testBucketName = "my-bucket" + +const ( + testRegion = "eu01" + testBucketName = "my-bucket" +) func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ @@ -38,8 +38,8 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -107,7 +107,7 @@ func TestParseInput(t *testing.T) { description: "project id missing", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, @@ -115,7 +115,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 1", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, @@ -123,7 +123,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 2", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/bucket/delete/delete_test.go b/internal/cmd/object-storage/bucket/delete/delete_test.go index 2dfe69ec6..829c374cf 100644 --- a/internal/cmd/object-storage/bucket/delete/delete_test.go +++ b/internal/cmd/object-storage/bucket/delete/delete_test.go @@ -13,16 +13,16 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testRegion = "eu01" -var testBucketName = "my-bucket" + +const ( + testRegion = "eu01" + testBucketName = "my-bucket" +) func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ @@ -36,8 +36,8 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -105,7 +105,7 @@ func TestParseInput(t *testing.T) { description: "project id missing", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, @@ -113,7 +113,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 1", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, @@ -121,7 +121,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 2", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/bucket/describe/describe_test.go b/internal/cmd/object-storage/bucket/describe/describe_test.go index df76123d2..a55f90bc1 100644 --- a/internal/cmd/object-storage/bucket/describe/describe_test.go +++ b/internal/cmd/object-storage/bucket/describe/describe_test.go @@ -15,16 +15,16 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testRegion = "eu01" -var testBucketName = "my-bucket" + +const ( + testRegion = "eu01" + testBucketName = "my-bucket" +) func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ @@ -38,8 +38,8 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -107,7 +107,7 @@ func TestParseInput(t *testing.T) { description: "project id missing", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, @@ -115,7 +115,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 1", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, @@ -123,7 +123,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 2", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/bucket/list/list.go b/internal/cmd/object-storage/bucket/list/list.go index fd0ec0552..595b095b9 100644 --- a/internal/cmd/object-storage/bucket/list/list.go +++ b/internal/cmd/object-storage/bucket/list/list.go @@ -64,23 +64,20 @@ func NewCmd(params *params.CmdParams) *cobra.Command { if err != nil { return fmt.Errorf("get Object Storage buckets: %w", err) } - if resp.Buckets == nil || len(*resp.Buckets) == 0 { - projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd) - if err != nil { - params.Printer.Debug(print.ErrorLevel, "get project name: %v", err) - projectLabel = model.ProjectId - } - params.Printer.Info("No buckets found for project %s\n", projectLabel) - return nil + buckets := resp.GetBuckets() + + projectLabel, err := projectname.GetProjectName(ctx, params.Printer, params.CliVersion, cmd) + if err != nil { + params.Printer.Debug(print.ErrorLevel, "get project name: %v", err) + projectLabel = model.ProjectId } - buckets := *resp.Buckets // Truncate output if model.Limit != nil && len(buckets) > int(*model.Limit) { buckets = buckets[:*model.Limit] } - return outputResult(params.Printer, model.OutputFormat, buckets) + return outputResult(params.Printer, model.OutputFormat, projectLabel, buckets) }, } @@ -120,12 +117,17 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora return req } -func outputResult(p *print.Printer, outputFormat string, buckets []objectstorage.Bucket) error { +func outputResult(p *print.Printer, outputFormat, projectLabel string, buckets []objectstorage.Bucket) error { if buckets == nil { return fmt.Errorf("buckets is empty") } return p.OutputResult(outputFormat, buckets, func() error { + if len(buckets) == 0 { + p.Outputf("No buckets found for project %s\n", projectLabel) + return nil + } + table := tables.NewTable() table.SetHeader("NAME", "REGION", "URL (PATH STYLE)", "URL (VIRTUAL HOSTED STYLE)") for i := range buckets { diff --git a/internal/cmd/object-storage/bucket/list/list_test.go b/internal/cmd/object-storage/bucket/list/list_test.go index 3d70ff50b..93b467433 100644 --- a/internal/cmd/object-storage/bucket/list/list_test.go +++ b/internal/cmd/object-storage/bucket/list/list_test.go @@ -16,9 +16,6 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") @@ -28,9 +25,9 @@ var testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - limitFlag: "10", - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + limitFlag: "10", + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -83,21 +80,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, @@ -155,6 +152,7 @@ func TestBuildRequest(t *testing.T) { func TestOutputResult(t *testing.T) { type args struct { outputFormat string + projectLabel string buckets []objectstorage.Bucket } tests := []struct { @@ -179,7 +177,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(¶ms.CmdParams{Printer: 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 { + if err := outputResult(p, tt.args.outputFormat, tt.args.projectLabel, 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_test.go b/internal/cmd/object-storage/credentials-group/create/create_test.go index 23908c876..307876137 100644 --- a/internal/cmd/object-storage/credentials-group/create/create_test.go +++ b/internal/cmd/object-storage/credentials-group/create/create_test.go @@ -16,22 +16,22 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testCredentialsGroupName = "test-name" -var testRegion = "eu01" + +const ( + testCredentialsGroupName = "test-name" + testRegion = "eu01" +) func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - credentialsGroupNameFlag: testCredentialsGroupName, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + credentialsGroupNameFlag: testCredentialsGroupName, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -95,21 +95,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/credentials-group/delete/delete_test.go b/internal/cmd/object-storage/credentials-group/delete/delete_test.go index 901fc4304..9be471b32 100644 --- a/internal/cmd/object-storage/credentials-group/delete/delete_test.go +++ b/internal/cmd/object-storage/credentials-group/delete/delete_test.go @@ -13,16 +13,14 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() var testCredentialsGroupId = uuid.NewString() -var testRegion = "eu01" + +const testRegion = "eu01" func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ @@ -36,8 +34,8 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -105,7 +103,7 @@ func TestParseInput(t *testing.T) { description: "project id missing", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, @@ -113,7 +111,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 1", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, @@ -121,7 +119,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 2", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/credentials-group/list/list.go b/internal/cmd/object-storage/credentials-group/list/list.go index 800b0f742..cbad3cba1 100644 --- a/internal/cmd/object-storage/credentials-group/list/list.go +++ b/internal/cmd/object-storage/credentials-group/list/list.go @@ -63,11 +63,7 @@ func NewCmd(params *params.CmdParams) *cobra.Command { if err != nil { return fmt.Errorf("list Object Storage credentials groups: %w", err) } - credentialsGroups := *resp.CredentialsGroups - if len(credentialsGroups) == 0 { - params.Printer.Info("No credentials groups found for your project") - return nil - } + credentialsGroups := resp.GetCredentialsGroups() // Truncate output if model.Limit != nil && len(credentialsGroups) > int(*model.Limit) { @@ -114,6 +110,11 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora func outputResult(p *print.Printer, outputFormat string, credentialsGroups []objectstorage.CredentialsGroup) error { return p.OutputResult(outputFormat, credentialsGroups, func() error { + if len(credentialsGroups) == 0 { + p.Outputf("No credentials groups found for your project") + return nil + } + table := tables.NewTable() table.SetHeader("ID", "NAME", "URN") for i := range credentialsGroups { 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 587e6842a..2415108c4 100644 --- a/internal/cmd/object-storage/credentials-group/list/list_test.go +++ b/internal/cmd/object-storage/credentials-group/list/list_test.go @@ -16,21 +16,19 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testRegion = "eu01" + +const testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - limitFlag: "10", - regionFlag: "eu01", + globalflags.ProjectIdFlag: testProjectId, + limitFlag: "10", + globalflags.RegionFlag: "eu01", } for _, mod := range mods { mod(flagValues) @@ -83,21 +81,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/credentials/create/create_test.go b/internal/cmd/object-storage/credentials/create/create_test.go index f3c0bdd60..f351a4d3e 100644 --- a/internal/cmd/object-storage/credentials/create/create_test.go +++ b/internal/cmd/object-storage/credentials/create/create_test.go @@ -17,24 +17,24 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() var testCredentialsGroupId = uuid.NewString() -var testExpirationDate = "2024-01-01T00:00:00Z" -var testRegion = "eu01" + +const ( + testExpirationDate = "2024-01-01T00:00:00Z" + testRegion = "eu01" +) func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - credentialsGroupIdFlag: testCredentialsGroupId, - expireDateFlag: testExpirationDate, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + credentialsGroupIdFlag: testCredentialsGroupId, + expireDateFlag: testExpirationDate, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -109,21 +109,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/credentials/delete/delete_test.go b/internal/cmd/object-storage/credentials/delete/delete_test.go index d5ff9e4e5..699d36bcf 100644 --- a/internal/cmd/object-storage/credentials/delete/delete_test.go +++ b/internal/cmd/object-storage/credentials/delete/delete_test.go @@ -13,17 +13,17 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() var testCredentialsGroupId = uuid.NewString() -var testCredentialsId = "keyID" -var testRegion = "eu01" + +const ( + testCredentialsId = "keyID" + testRegion = "eu01" +) func fixtureArgValues(mods ...func(argValues []string)) []string { argValues := []string{ @@ -37,9 +37,9 @@ func fixtureArgValues(mods ...func(argValues []string)) []string { func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - credentialsGroupIdFlag: testCredentialsGroupId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + credentialsGroupIdFlag: testCredentialsGroupId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -109,7 +109,7 @@ func TestParseInput(t *testing.T) { description: "project id missing", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, @@ -117,7 +117,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 1", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, @@ -125,7 +125,7 @@ func TestParseInput(t *testing.T) { description: "project id invalid 2", argValues: fixtureArgValues(), flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/credentials/list/list.go b/internal/cmd/object-storage/credentials/list/list.go index 0ebc5efea..522459440 100644 --- a/internal/cmd/object-storage/credentials/list/list.go +++ b/internal/cmd/object-storage/credentials/list/list.go @@ -66,23 +66,19 @@ func NewCmd(params *params.CmdParams) *cobra.Command { if err != nil { return fmt.Errorf("list Object Storage credentials: %w", err) } - credentials := *resp.AccessKeys - if len(credentials) == 0 { - credentialsGroupLabel, err := objectStorageUtils.GetCredentialsGroupName(ctx, apiClient, model.ProjectId, model.CredentialsGroupId, model.Region) - if err != nil { - params.Printer.Debug(print.ErrorLevel, "get credentials group name: %v", err) - credentialsGroupLabel = model.CredentialsGroupId - } - - params.Printer.Info("No credentials found for credentials group %q\n", credentialsGroupLabel) - return nil + credentials := resp.GetAccessKeys() + + credentialsGroupLabel, err := objectStorageUtils.GetCredentialsGroupName(ctx, apiClient, model.ProjectId, model.CredentialsGroupId, model.Region) + if err != nil { + params.Printer.Debug(print.ErrorLevel, "get credentials group name: %v", err) + credentialsGroupLabel = model.CredentialsGroupId } // Truncate output if model.Limit != nil && len(credentials) > int(*model.Limit) { credentials = credentials[:*model.Limit] } - return outputResult(params.Printer, model.OutputFormat, credentials) + return outputResult(params.Printer, model.OutputFormat, credentialsGroupLabel, credentials) }, } configureFlags(cmd) @@ -127,8 +123,13 @@ func buildRequest(ctx context.Context, model *inputModel, apiClient *objectstora return req } -func outputResult(p *print.Printer, outputFormat string, credentials []objectstorage.AccessKey) error { +func outputResult(p *print.Printer, outputFormat, credentialsGroupLabel string, credentials []objectstorage.AccessKey) error { return p.OutputResult(outputFormat, credentials, func() error { + if len(credentials) == 0 { + p.Outputf("No credentials found for credentials group %q\n", credentialsGroupLabel) + return nil + } + table := tables.NewTable() table.SetHeader("CREDENTIALS ID", "ACCESS KEY ID", "EXPIRES AT") for i := range credentials { diff --git a/internal/cmd/object-storage/credentials/list/list_test.go b/internal/cmd/object-storage/credentials/list/list_test.go index 119f7c7c0..8e6469b18 100644 --- a/internal/cmd/object-storage/credentials/list/list_test.go +++ b/internal/cmd/object-storage/credentials/list/list_test.go @@ -16,9 +16,6 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") @@ -29,10 +26,10 @@ var testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - credentialsGroupIdFlag: testCredentialsGroupId, - limitFlag: "10", - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + credentialsGroupIdFlag: testCredentialsGroupId, + limitFlag: "10", + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -87,21 +84,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, @@ -179,8 +176,9 @@ func TestBuildRequest(t *testing.T) { func TestOutputResult(t *testing.T) { type args struct { - outputFormat string - credentials []objectstorage.AccessKey + outputFormat string + credentialsGroupLabel string + credentials []objectstorage.AccessKey } tests := []struct { name string @@ -211,7 +209,7 @@ func TestOutputResult(t *testing.T) { p.Cmd = NewCmd(¶ms.CmdParams{Printer: 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 { + if err := outputResult(p, tt.args.outputFormat, tt.args.credentialsGroupLabel, tt.args.credentials); (err != nil) != tt.wantErr { t.Errorf("outputResult() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/internal/cmd/object-storage/disable/disable_test.go b/internal/cmd/object-storage/disable/disable_test.go index 5b5a2ea7f..8820b8cc3 100644 --- a/internal/cmd/object-storage/disable/disable_test.go +++ b/internal/cmd/object-storage/disable/disable_test.go @@ -13,20 +13,18 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testRegion = "eu01" + +const testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -78,21 +76,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, }, diff --git a/internal/cmd/object-storage/enable/enable_test.go b/internal/cmd/object-storage/enable/enable_test.go index 59e88e9e0..db8c35d3f 100644 --- a/internal/cmd/object-storage/enable/enable_test.go +++ b/internal/cmd/object-storage/enable/enable_test.go @@ -13,20 +13,18 @@ import ( "github.com/stackitcloud/stackit-sdk-go/services/objectstorage" ) -var projectIdFlag = globalflags.ProjectIdFlag -var regionFlag = globalflags.RegionFlag - type testCtxKey struct{} var testCtx = context.WithValue(context.Background(), testCtxKey{}, "foo") var testClient = &objectstorage.APIClient{} var testProjectId = uuid.NewString() -var testRegion = "eu01" + +const testRegion = "eu01" func fixtureFlagValues(mods ...func(flagValues map[string]string)) map[string]string { flagValues := map[string]string{ - projectIdFlag: testProjectId, - regionFlag: testRegion, + globalflags.ProjectIdFlag: testProjectId, + globalflags.RegionFlag: testRegion, } for _, mod := range mods { mod(flagValues) @@ -78,21 +76,21 @@ func TestParseInput(t *testing.T) { { description: "project id missing", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - delete(flagValues, projectIdFlag) + delete(flagValues, globalflags.ProjectIdFlag) }), isValid: false, }, { description: "project id invalid 1", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "" + flagValues[globalflags.ProjectIdFlag] = "" }), isValid: false, }, { description: "project id invalid 2", flagValues: fixtureFlagValues(func(flagValues map[string]string) { - flagValues[projectIdFlag] = "invalid-uuid" + flagValues[globalflags.ProjectIdFlag] = "invalid-uuid" }), isValid: false, },