提交 51f91537 编写于 作者: D Douwe Maan

Merge branch 'rd-fix-github-url-when-listing-repositories-at-importing' into 'master'

Fix provider server URL used when listing repos to import

See merge request gitlab-org/gitlab-ce!17692
module ImportHelper
include ::Gitlab::Utils::StrongMemoize
def has_ci_cd_only_params?
false
end
......@@ -75,17 +77,18 @@ module ImportHelper
private
def github_project_url(full_path)
"#{github_root_url}/#{full_path}"
URI.join(github_root_url, full_path).to_s
end
def github_root_url
return @github_url if defined?(@github_url)
strong_memoize(:github_url) do
provider = Gitlab::Auth::OAuth::Provider.config_for('github')
provider = Gitlab.config.omniauth.providers.find { |p| p.name == 'github' }
@github_url = provider.fetch('url', 'https://github.com') if provider
provider&.dig('url').presence || 'https://github.com'
end
end
def gitea_project_url(full_path)
"#{@gitea_host_url.sub(%r{/+\z}, '')}/#{full_path}"
URI.join(@gitea_host_url, full_path).to_s
end
end
---
title: Fix generated URL when listing repoitories for import
merge_request: 17692
author:
type: fixed
......@@ -4,7 +4,7 @@ module Gitlab
class Config
class << self
def options
Gitlab.config.omniauth.providers.find { |provider| provider.name == 'saml' }
Gitlab::Auth::OAuth::Provider.config_for('saml')
end
def groups
......
......@@ -197,10 +197,7 @@ module Gitlab
end
def github_omniauth_provider
@github_omniauth_provider ||=
Gitlab.config.omniauth.providers
.find { |provider| provider.name == 'github' }
.to_h
@github_omniauth_provider ||= Gitlab::Auth::OAuth::Provider.config_for('github').to_h
end
def rate_limit_counter
......
......@@ -72,7 +72,7 @@ module Gitlab
end
def config
Gitlab.config.omniauth.providers.find {|provider| provider.name == "gitlab"}
Gitlab::Auth::OAuth::Provider.config_for('gitlab')
end
def gitlab_options
......
......@@ -83,7 +83,7 @@ module Gitlab
end
def config
Gitlab.config.omniauth.providers.find { |provider| provider.name == "github" }
Gitlab::Auth::OAuth::Provider.config_for('github')
end
def github_options
......
......@@ -32,7 +32,7 @@ module GoogleApi
private
def config
Gitlab.config.omniauth.providers.find { |provider| provider.name == "google_oauth2" }
Gitlab::Auth::OAuth::Provider.config_for('google_oauth2')
end
def client
......
......@@ -27,25 +27,48 @@ describe ImportHelper do
describe '#provider_project_link' do
context 'when provider is "github"' do
let(:github_server_url) { nil }
before do
setting = Settingslogic.new('name' => 'github')
setting['url'] = github_server_url if github_server_url
allow(Gitlab.config.omniauth).to receive(:providers).and_return([setting])
end
context 'when provider does not specify a custom URL' do
it 'uses default GitHub URL' do
allow(Gitlab.config.omniauth).to receive(:providers)
.and_return([Settingslogic.new('name' => 'github')])
expect(helper.provider_project_link('github', 'octocat/Hello-World'))
.to include('href="https://github.com/octocat/Hello-World"')
end
end
context 'when provider specify a custom URL' do
let(:github_server_url) { 'https://github.company.com' }
it 'uses custom URL' do
allow(Gitlab.config.omniauth).to receive(:providers)
.and_return([Settingslogic.new('name' => 'github', 'url' => 'https://github.company.com')])
expect(helper.provider_project_link('github', 'octocat/Hello-World'))
.to include('href="https://github.company.com/octocat/Hello-World"')
end
end
context "when custom URL contains a '/' char at the end" do
let(:github_server_url) { 'https://github.company.com/' }
it "doesn't render double slash" do
expect(helper.provider_project_link('github', 'octocat/Hello-World'))
.to include('href="https://github.company.com/octocat/Hello-World"')
end
end
context 'when provider is missing' do
it 'uses the default URL' do
allow(Gitlab.config.omniauth).to receive(:providers).and_return([])
expect(helper.provider_project_link('github', 'octocat/Hello-World'))
.to include('href="https://github.com/octocat/Hello-World"')
end
end
end
context 'when provider is "gitea"' do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册