diff --git a/go.mod b/go.mod index 8097b3dee..2c369accc 100644 --- a/go.mod +++ b/go.mod @@ -114,7 +114,7 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) -// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250126110945-81abbdde452f +replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20241121100855-e7a75ceee2bd diff --git a/go.sum b/go.sum index 8ad81c86e..7ce4dd48c 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ github.com/jfrog/build-info-go v1.10.9 h1:mdJ+wlLw2ReFsqC7rifJVlRYLEqYk38uXDYAOZ github.com/jfrog/build-info-go v1.10.9/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE= github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s= github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4= -github.com/jfrog/jfrog-client-go v1.50.0 h1:t7v/zpLkPomHR6ZjVbPQ1WPQJd9IFKESK9Tt6phZz3k= -github.com/jfrog/jfrog-client-go v1.50.0/go.mod h1:xHxwKBjPSUBd/FyCWgusfHmSWKUZTkfOZkTmntC2F5Y= +github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e h1:SGKkXdFJtc5Rb32jh5E55SCLrHXtOTvc9YKy6QwWbzY= +github.com/jfrog/jfrog-client-go v1.28.1-0.20250221062042-87cb5136765e/go.mod h1:hDoUcW6LZme83YNFbdSRImV+di1x0GP+Nlw7fctkwtE= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= diff --git a/lifecycle/common.go b/lifecycle/common.go index 5e1b2d0a2..5ec4b4131 100644 --- a/lifecycle/common.go +++ b/lifecycle/common.go @@ -21,6 +21,18 @@ type releaseBundleCmd struct { } func (rbc *releaseBundleCmd) getPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager, + rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) { + return rbc.initPrerequisites() +} + +func (rbp *ReleaseBundlePromoteCommand) getPromotionPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager, + rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) { + servicesManager, rbDetails, queryParams, err = rbp.initPrerequisites() + queryParams.PromotionType = rbp.promotionType + return servicesManager, rbDetails, queryParams, err +} + +func (rbc *releaseBundleCmd) initPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager, rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) { servicesManager, err = utils.CreateLifecycleServiceManager(rbc.serverDetails, false) if err != nil { @@ -34,6 +46,7 @@ func (rbc *releaseBundleCmd) getPrerequisites() (servicesManager *lifecycle.Life ProjectKey: rbc.rbProjectKey, Async: !rbc.sync, } + return } diff --git a/lifecycle/common_test.go b/lifecycle/common_test.go new file mode 100644 index 000000000..8eb58b95c --- /dev/null +++ b/lifecycle/common_test.go @@ -0,0 +1,69 @@ +package lifecycle + +import ( + "github.com/jfrog/jfrog-cli-core/v2/utils/config" + "github.com/jfrog/jfrog-client-go/lifecycle/services" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGetPrerequisites_Success(t *testing.T) { + serverDetails := &config.ServerDetails{} + rbCmd := &releaseBundleCmd{ + serverDetails: serverDetails, + releaseBundleName: "testRelease", + releaseBundleVersion: "1.0.0", + sync: true, + rbProjectKey: "project1", + } + + expectedQueryParams := services.CommonOptionalQueryParams{ + ProjectKey: rbCmd.rbProjectKey, + Async: false, + } + + expectedRbDetails := services.ReleaseBundleDetails{ + ReleaseBundleName: rbCmd.releaseBundleName, + ReleaseBundleVersion: rbCmd.releaseBundleVersion, + } + + servicesManager, rbDetails, queryParams, err := rbCmd.getPrerequisites() + + assert.NoError(t, err) + assert.NotNil(t, servicesManager, "Expected servicesManager to be initialized") + assert.Equal(t, expectedRbDetails, rbDetails, "ReleaseBundleDetails does not match expected values") + assert.Equal(t, expectedQueryParams, queryParams, "QueryParams do not match expected values") + +} + +func TestGetPromotionPrerequisites_Success(t *testing.T) { + serverDetails := &config.ServerDetails{} + rbp := &ReleaseBundlePromoteCommand{ + promotionType: "move", + releaseBundleCmd: releaseBundleCmd{ + serverDetails: serverDetails, + releaseBundleName: "testRelease", + releaseBundleVersion: "1.0.0", + sync: true, + rbProjectKey: "project1", + }, + } + + expectedQueryParams := services.CommonOptionalQueryParams{ + ProjectKey: rbp.rbProjectKey, + Async: false, + PromotionType: rbp.promotionType, + } + + expectedRbDetails := services.ReleaseBundleDetails{ + ReleaseBundleName: rbp.releaseBundleName, + ReleaseBundleVersion: rbp.releaseBundleVersion, + } + + servicesManager, rbDetails, queryParams, err := rbp.getPromotionPrerequisites() + + assert.NoError(t, err) + assert.NotNil(t, servicesManager, "Expected servicesManager to be initialized") + assert.Equal(t, expectedRbDetails, rbDetails, "ReleaseBundleDetails do not match expected values") // Replace _ with appropriate variable. + assert.Equal(t, expectedQueryParams, queryParams, "QueryParams do not match expected values") +} diff --git a/lifecycle/promote.go b/lifecycle/promote.go index fb078ff36..285104d98 100644 --- a/lifecycle/promote.go +++ b/lifecycle/promote.go @@ -14,6 +14,7 @@ type ReleaseBundlePromoteCommand struct { environment string includeReposPatterns []string excludeReposPatterns []string + promotionType string } func NewReleaseBundlePromoteCommand() *ReleaseBundlePromoteCommand { @@ -65,6 +66,11 @@ func (rbp *ReleaseBundlePromoteCommand) SetExcludeReposPatterns(excludeReposPatt return rbp } +func (rbp *ReleaseBundlePromoteCommand) SetPromotionType(promotionType string) *ReleaseBundlePromoteCommand { + rbp.promotionType = promotionType + return rbp +} + func (rbp *ReleaseBundlePromoteCommand) CommandName() string { return "rb_promote" } @@ -78,7 +84,8 @@ func (rbp *ReleaseBundlePromoteCommand) Run() error { return err } - servicesManager, rbDetails, queryParams, err := rbp.getPrerequisites() + servicesManager, rbDetails, queryParams, err := rbp.getPromotionPrerequisites() + if err != nil { return err }