Skip to content

Commit fadaac5

Browse files
committed
Refactor
1 parent f13b845 commit fadaac5

File tree

3 files changed

+63
-13
lines changed

3 files changed

+63
-13
lines changed

apptrust/commands/flags.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ var flagsMap = map[string]components.Flag{
8181
DryRunFlag: components.NewBoolFlag(DryRunFlag, "Perform a simulation of the operation.", components.WithBoolDefaultValueFalse()),
8282
ExcludeReposFlag: components.NewStringFlag(ExcludeReposFlag, "Semicolon-separated list of repositories to exclude.", func(f *components.StringFlag) { f.Mandatory = false }),
8383
IncludeReposFlag: components.NewStringFlag(IncludeReposFlag, "Semicolon-separated list of repositories to include.", func(f *components.StringFlag) { f.Mandatory = false }),
84-
PropsFlag: components.NewStringFlag(PropsFlag, "Semicolon-separated list of properties in the format \"key1=value1;key2=value2;...\" to be added to each artifact.", func(f *components.StringFlag) { f.Mandatory = false }),
84+
PropsFlag: components.NewStringFlag(PropsFlag, "Semicolon-separated list of properties in the form of 'key1=value1;key2=value2;...' to be added to each artifact.", func(f *components.StringFlag) { f.Mandatory = false }),
8585
}
8686

8787
var commandFlags = map[string][]string{

apptrust/commands/version/release_app_version_cmd.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"github.com/jfrog/jfrog-client-go/utils/errorutils"
1818
)
1919

20-
type ReleaseAppVersionCommand struct {
20+
type releaseAppVersionCommand struct {
2121
versionService versions.VersionService
2222
serverDetails *coreConfig.ServerDetails
2323
applicationKey string
@@ -26,7 +26,7 @@ type ReleaseAppVersionCommand struct {
2626
sync bool
2727
}
2828

29-
func (rv *ReleaseAppVersionCommand) Run() error {
29+
func (rv *releaseAppVersionCommand) Run() error {
3030
ctx, err := service.NewContext(*rv.serverDetails)
3131
if err != nil {
3232
return err
@@ -35,15 +35,15 @@ func (rv *ReleaseAppVersionCommand) Run() error {
3535
return rv.versionService.ReleaseAppVersion(ctx, rv.applicationKey, rv.version, rv.requestPayload, rv.sync)
3636
}
3737

38-
func (rv *ReleaseAppVersionCommand) ServerDetails() (*coreConfig.ServerDetails, error) {
38+
func (rv *releaseAppVersionCommand) ServerDetails() (*coreConfig.ServerDetails, error) {
3939
return rv.serverDetails, nil
4040
}
4141

42-
func (rv *ReleaseAppVersionCommand) CommandName() string {
42+
func (rv *releaseAppVersionCommand) CommandName() string {
4343
return commands.ReleaseAppVersion
4444
}
4545

46-
func (rv *ReleaseAppVersionCommand) prepareAndRunCommand(ctx *components.Context) error {
46+
func (rv *releaseAppVersionCommand) prepareAndRunCommand(ctx *components.Context) error {
4747
if len(ctx.Arguments) != 2 {
4848
return pluginsCommon.WrongNumberOfArgumentsHandler(ctx)
4949
}
@@ -67,7 +67,7 @@ func (rv *ReleaseAppVersionCommand) prepareAndRunCommand(ctx *components.Context
6767
return commonCLiCommands.Exec(rv)
6868
}
6969

70-
func (rv *ReleaseAppVersionCommand) buildRequestPayload(ctx *components.Context) (*model.ReleaseAppVersionRequest, error) {
70+
func (rv *releaseAppVersionCommand) buildRequestPayload(ctx *components.Context) (*model.ReleaseAppVersionRequest, error) {
7171
var includedRepos []string
7272
var excludedRepos []string
7373
var artifactProps map[string]string
@@ -84,7 +84,7 @@ func (rv *ReleaseAppVersionCommand) buildRequestPayload(ctx *components.Context)
8484
var err error
8585
artifactProps, err = utils.ParseMapFlag(propsStr)
8686
if err != nil {
87-
return nil, err
87+
return nil, errorutils.CheckErrorf("failed to parse properties: %s", err.Error())
8888
}
8989
}
9090

@@ -109,7 +109,7 @@ func (rv *ReleaseAppVersionCommand) buildRequestPayload(ctx *components.Context)
109109
}
110110

111111
func GetReleaseAppVersionCommand(appContext app.Context) components.Command {
112-
cmd := &ReleaseAppVersionCommand{versionService: appContext.GetVersionService()}
112+
cmd := &releaseAppVersionCommand{versionService: appContext.GetVersionService()}
113113
return components.Command{
114114
Name: commands.ReleaseAppVersion,
115115
Description: "Release application version",

apptrust/commands/version/release_app_version_cmd_test.go

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"testing"
66

77
"github.com/jfrog/jfrog-cli-application/apptrust/commands"
8+
"github.com/jfrog/jfrog-cli-application/apptrust/commands/utils"
89
mockversions "github.com/jfrog/jfrog-cli-application/apptrust/service/versions/mocks"
910
"go.uber.org/mock/gomock"
1011

@@ -44,7 +45,7 @@ func TestReleaseAppVersionCommand_Run(t *testing.T) {
4445
mockVersionService.EXPECT().ReleaseAppVersion(gomock.Any(), applicationKey, version, requestPayload, tt.sync).
4546
Return(nil).Times(1)
4647

47-
cmd := &ReleaseAppVersionCommand{
48+
cmd := &releaseAppVersionCommand{
4849
versionService: mockVersionService,
4950
serverDetails: serverDetails,
5051
applicationKey: applicationKey,
@@ -91,7 +92,7 @@ func TestReleaseAppVersionCommand_Run_Error(t *testing.T) {
9192
mockVersionService.EXPECT().ReleaseAppVersion(gomock.Any(), applicationKey, version, requestPayload, tt.sync).
9293
Return(expectedError).Times(1)
9394

94-
cmd := &ReleaseAppVersionCommand{
95+
cmd := &releaseAppVersionCommand{
9596
versionService: mockVersionService,
9697
serverDetails: serverDetails,
9798
applicationKey: applicationKey,
@@ -112,7 +113,7 @@ func TestReleaseAppVersionCommand_ServerDetails(t *testing.T) {
112113
defer ctrl.Finish()
113114

114115
serverDetails := &config.ServerDetails{}
115-
cmd := &ReleaseAppVersionCommand{
116+
cmd := &releaseAppVersionCommand{
116117
serverDetails: serverDetails,
117118
}
118119

@@ -125,6 +126,55 @@ func TestReleaseAppVersionCommand_CommandName(t *testing.T) {
125126
ctrl := gomock.NewController(t)
126127
defer ctrl.Finish()
127128

128-
cmd := &ReleaseAppVersionCommand{}
129+
cmd := &releaseAppVersionCommand{}
129130
assert.Equal(t, commands.ReleaseAppVersion, cmd.CommandName())
130131
}
132+
133+
func TestReleaseAppVersionCommand_BuildRequestPayload(t *testing.T) {
134+
// Test the key validation logic used in buildRequestPayload
135+
t.Run("validation test", func(t *testing.T) {
136+
// Let's define the actual allowed values for promotion type
137+
allowedValues := []string{model.PromotionTypeCopy, model.PromotionTypeMove}
138+
139+
// Case 1: Empty string should return the default value
140+
result1, err1 := utils.ValidateEnumFlag(
141+
"test-flag",
142+
"",
143+
model.PromotionTypeCopy,
144+
allowedValues)
145+
146+
assert.NoError(t, err1)
147+
assert.Equal(t, model.PromotionTypeCopy, result1)
148+
149+
// Case 2: Valid value should be returned as is
150+
result2, err2 := utils.ValidateEnumFlag(
151+
"test-flag",
152+
model.PromotionTypeMove,
153+
model.PromotionTypeCopy,
154+
allowedValues)
155+
156+
assert.NoError(t, err2)
157+
assert.Equal(t, model.PromotionTypeMove, result2)
158+
159+
// Case 3: Invalid value should return an error
160+
result3, err3 := utils.ValidateEnumFlag(
161+
"test-flag",
162+
"invalid-type",
163+
model.PromotionTypeCopy,
164+
allowedValues)
165+
166+
assert.Error(t, err3)
167+
assert.Equal(t, "", result3) // On error, the result is empty
168+
assert.Contains(t, err3.Error(), "invalid value")
169+
})
170+
171+
t.Run("property parsing test", func(t *testing.T) {
172+
// Test property parsing behavior
173+
props, err := utils.ParseMapFlag("key1=value1;key2=value2")
174+
assert.NoError(t, err)
175+
assert.Equal(t, map[string]string{"key1": "value1", "key2": "value2"}, props)
176+
177+
_, err = utils.ParseMapFlag("invalid-format")
178+
assert.Error(t, err)
179+
})
180+
}

0 commit comments

Comments
 (0)