diff options
author | Raido Oras <oras.raido@gmail.com> | 2023-08-08 05:13:52 +0300 |
---|---|---|
committer | Raido Oras <raido.oras@scoro.com> | 2023-08-21 14:33:58 +0300 |
commit | d7b611aa058962ed5dee0213a99a45f0207cefda (patch) | |
tree | 1bdcf39f10e29fd92aace11a45dfab887cd8f802 /pkg/commands | |
parent | ebd56bd8d5f97b5a9ab9b17ed6cc8b4a80bc3385 (diff) |
Allow port in webDomain for services config values
Diffstat (limited to 'pkg/commands')
-rw-r--r-- | pkg/commands/hosting_service/hosting_service.go | 9 | ||||
-rw-r--r-- | pkg/commands/hosting_service/hosting_service_test.go | 24 |
2 files changed, 28 insertions, 5 deletions
diff --git a/pkg/commands/hosting_service/hosting_service.go b/pkg/commands/hosting_service/hosting_service.go index e6f9bef79..5744680ab 100644 --- a/pkg/commands/hosting_service/hosting_service.go +++ b/pkg/commands/hosting_service/hosting_service.go @@ -101,15 +101,14 @@ func (self *HostingServiceMgr) getCandidateServiceDomains() []ServiceDomain { if len(self.configServiceDomains) > 0 { for gitDomain, typeAndDomain := range self.configServiceDomains { - splitData := strings.Split(typeAndDomain, ":") - if len(splitData) != 2 { + provider, webDomain, success := strings.Cut(typeAndDomain, ":") + + // we allow for one ':' for specifying the TCP port + if !success || strings.Count(webDomain, ":") > 1 { self.log.Errorf("Unexpected format for git service: '%s'. Expected something like 'github.com:github.com'", typeAndDomain) continue } - provider := splitData[0] - webDomain := splitData[1] - serviceDefinition, ok := serviceDefinitionByProvider[provider] if !ok { providerNames := lo.Map(serviceDefinitions, func(serviceDefinition ServiceDefinition, _ int) string { diff --git a/pkg/commands/hosting_service/hosting_service_test.go b/pkg/commands/hosting_service/hosting_service_test.go index 83d707a43..c5968c4cd 100644 --- a/pkg/commands/hosting_service/hosting_service_test.go +++ b/pkg/commands/hosting_service/hosting_service_test.go @@ -341,6 +341,30 @@ func TestGetPullRequestURL(t *testing.T) { expectedLoggedErrors: nil, }, { + testName: "Does not log error when config service webDomain contains a port", + from: "feature/profile-page", + remoteUrl: "git@my.domain.test:johndoe/social_network.git", + configServiceDomains: map[string]string{ + "my.domain.test": "gitlab:my.domain.test:1111", + }, + test: func(url string, err error) { + assert.NoError(t, err) + assert.Equal(t, "https://my.domain.test:1111/johndoe/social_network/-/merge_requests/new?merge_request[source_branch]=feature%2Fprofile-page", url) + }, + }, + { + testName: "Logs error when webDomain contains more than one colon", + from: "feature/profile-page", + remoteUrl: "git@my.domain.test:johndoe/social_network.git", + configServiceDomains: map[string]string{ + "my.domain.test": "gitlab:my.domain.test:1111:2222", + }, + test: func(url string, err error) { + assert.Error(t, err) + }, + expectedLoggedErrors: []string{"Unexpected format for git service: 'gitlab:my.domain.test:1111:2222'. Expected something like 'github.com:github.com'"}, + }, + { testName: "Logs error when config service domain is malformed", from: "feature/profile-page", remoteUrl: "git@bitbucket.org:johndoe/social_network.git", |