diff --git a/pkg/simple/client/devops/jenkins/internal/bitbucket.go b/pkg/simple/client/devops/jenkins/internal/bitbucket.go index 080227673..6a0378d41 100644 --- a/pkg/simple/client/devops/jenkins/internal/bitbucket.go +++ b/pkg/simple/client/devops/jenkins/internal/bitbucket.go @@ -35,16 +35,13 @@ func AppendBitbucketServerSourceToEtree(source *etree.Element, gitSource *devops forkTrait := traits.CreateElement("com.cloudbees.jenkins.plugins.bitbucket.ForkPullRequestDiscoveryTrait") forkTrait.CreateElement("strategyId").SetText(strconv.Itoa(gitSource.DiscoverPRFromForks.Strategy)) trustClass := "com.cloudbees.jenkins.plugins.bitbucket.ForkPullRequestDiscoveryTrait$" - switch gitSource.DiscoverPRFromForks.Trust { - case 1: - trustClass += "TrustEveryone" - case 2: - trustClass += "TrustTeamForks" - case 3: - trustClass += "TrustNobody" - default: - trustClass += "TrustEveryone" + + if prTrust := PRDiscoverTrust(gitSource.DiscoverPRFromForks.Trust); prTrust.IsValid() { + trustClass += prTrust.String() + } else { + klog.Warningf("invalid Bitbucket discover PR trust value: %d", prTrust.Value()) } + forkTrait.CreateElement("trust").CreateAttr("class", trustClass) } if gitSource.DiscoverTags { @@ -111,23 +108,16 @@ func GetBitbucketServerSourceFromEtree(source *etree.Element) *devopsv1alpha3.Bi strategyId, _ := strconv.Atoi(forkPRDiscoverTrait.SelectElement("strategyId").Text()) trustClass := forkPRDiscoverTrait.SelectElement("trust").SelectAttr("class").Value trust := strings.Split(trustClass, "$") - switch trust[1] { - case "TrustEveryone": + + if prTrust := BitbucketPRDiscoverTrust(1).ParseFromString(trust[1]); prTrust.IsValid() { s.DiscoverPRFromForks = &devopsv1alpha3.DiscoverPRFromForks{ Strategy: strategyId, - Trust: 1, - } - case "TrustTeamForks": - s.DiscoverPRFromForks = &devopsv1alpha3.DiscoverPRFromForks{ - Strategy: strategyId, - Trust: 2, - } - case "TrustNobody": - s.DiscoverPRFromForks = &devopsv1alpha3.DiscoverPRFromForks{ - Strategy: strategyId, - Trust: 3, + Trust: prTrust.Value(), } + } else { + klog.Warningf("invalid Bitbucket discover PR trust value: %s", trust[1]) } + if cloneTrait := traits.SelectElement( "jenkins.plugins.git.traits.CloneOptionTrait"); cloneTrait != nil { if cloneExtension := cloneTrait.SelectElement( diff --git a/pkg/simple/client/devops/jenkins/internal/pull_request.go b/pkg/simple/client/devops/jenkins/internal/pull_request.go index fc79409fd..b5b7993e4 100644 --- a/pkg/simple/client/devops/jenkins/internal/pull_request.go +++ b/pkg/simple/client/devops/jenkins/internal/pull_request.go @@ -10,12 +10,6 @@ const ( PRDiscoverUnknown PRDiscoverTrust = -1 ) -type GitHubPRDiscoverTrust int - -const ( - GitHubPRDiscoverTrustContributors GitHubPRDiscoverTrust = 1 -) - func (p PRDiscoverTrust) Value() int { return int(p) } @@ -49,6 +43,13 @@ func (p PRDiscoverTrust) ParseFromString(prTrust string) PRDiscoverTrust { } } +// GitHub +type GitHubPRDiscoverTrust int + +const ( + GitHubPRDiscoverTrustContributors GitHubPRDiscoverTrust = 1 +) + func (p GitHubPRDiscoverTrust) Value() int { return int(p) } @@ -78,3 +79,46 @@ func (p GitHubPRDiscoverTrust) ParseFromString(prTrust string) GitHubPRDiscoverT func (p GitHubPRDiscoverTrust) IsValid() bool { return PRDiscoverTrust(p).IsValid() } + +// Bitbucket +type BitbucketPRDiscoverTrust int + +const ( + BitbucketPRDiscoverTrustEveryone BitbucketPRDiscoverTrust = 1 + BitbucketPRDiscoverTrustTeamForks BitbucketPRDiscoverTrust = 2 + BitbucketPRDiscoverTrustNobody BitbucketPRDiscoverTrust = 3 +) + +func (p BitbucketPRDiscoverTrust) Value() int { + return int(p) +} + +func (p BitbucketPRDiscoverTrust) IsValid() bool { + return p.String() != "" +} + +func (p BitbucketPRDiscoverTrust) String() string { + switch p { + default: + fallthrough + case BitbucketPRDiscoverTrustEveryone: + return "TrustEveryone" + case BitbucketPRDiscoverTrustTeamForks: + return "TrustTeamForks" + case BitbucketPRDiscoverTrustNobody: + return "TrustNobody" + } +} + +func (p BitbucketPRDiscoverTrust) ParseFromString(prTrust string) BitbucketPRDiscoverTrust { + switch prTrust { + default: + fallthrough + case "TrustEveryone": + return BitbucketPRDiscoverTrustEveryone + case "TrustTeamForks": + return BitbucketPRDiscoverTrustTeamForks + case "TrustNobody": + return BitbucketPRDiscoverTrustNobody + } +} diff --git a/pkg/simple/client/devops/jenkins/internal/pull_request_test.go b/pkg/simple/client/devops/jenkins/internal/pull_request_test.go index 78e4153a8..04e15a516 100644 --- a/pkg/simple/client/devops/jenkins/internal/pull_request_test.go +++ b/pkg/simple/client/devops/jenkins/internal/pull_request_test.go @@ -19,10 +19,23 @@ func TestPRDiscoverTrust(t *testing.T) { assert.Equal(t, PRDiscoverTrust(1).ParseFromString("TrustNobody"), PRDiscoverTrustNobody) assert.Equal(t, PRDiscoverTrust(1).ParseFromString("fake").IsValid(), false) + // GitHub assert.Equal(t, GitHubPRDiscoverTrust(1).String(), "TrustContributors") assert.Equal(t, GitHubPRDiscoverTrust(2).String(), PRDiscoverTrust(2).String()) assert.Equal(t, GitHubPRDiscoverTrust(1).Value(), 1) assert.Equal(t, GitHubPRDiscoverTrust(1).ParseFromString("TrustContributors"), GitHubPRDiscoverTrustContributors) assert.Equal(t, GitHubPRDiscoverTrust(1).ParseFromString("TrustEveryone").String(), "TrustEveryone") assert.Equal(t, GitHubPRDiscoverTrust(1).ParseFromString("fake").IsValid(), false) + + // Bithucket + assert.Equal(t, BitbucketPRDiscoverTrust(1).String(), "TrustEveryone") + assert.Equal(t, BitbucketPRDiscoverTrust(2).String(), "TrustTeamForks") + assert.Equal(t, BitbucketPRDiscoverTrust(3).String(), "TrustNobody") + assert.Equal(t, BitbucketPRDiscoverTrust(3).Value(), 3) + assert.Equal(t, BitbucketPRDiscoverTrust(-1).String(), "TrustEveryone") + assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustEveryone"), BitbucketPRDiscoverTrustEveryone) + assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustTeamForks"), BitbucketPRDiscoverTrustTeamForks) + assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustNobody"), BitbucketPRDiscoverTrustNobody) + assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("fake"), BitbucketPRDiscoverTrustEveryone) + assert.Equal(t, BitbucketPRDiscoverTrust(1).ParseFromString("TrustNobody").IsValid(), true) }