Fix GitHub project's link on import page when provider has a custom URL

This commit is contained in:
Douglas Barbosa Alexandre 2016-04-18 20:01:33 -03:00
parent 2011f02b5d
commit 835acf22d4
4 changed files with 46 additions and 2 deletions

View file

@ -94,6 +94,7 @@ v 8.7.0 (unreleased)
- Fix emoji catgories in the emoji picker
- Execute system web hooks on push to the project
- Allow enable/disable push events for system hooks
- Fix GitHub project's link in the import page when provider has a custom URL
v 8.6.7 (unreleased)
- Fix vulnerability that made it possible to enumerate private projects belonging to group

View file

@ -0,0 +1,18 @@
module ImportHelper
def github_project_link(path_with_namespace)
link_to path_with_namespace, github_project_url(path_with_namespace), target: '_blank'
end
private
def github_project_url(path_with_namespace)
"#{github_root_url}/#{path_with_namespace}"
end
def github_root_url
return @github_url if defined?(@github_url)
provider = Gitlab.config.omniauth.providers.find { |p| p.name == 'github' }
@github_url = provider.fetch('url', 'https://github.com') if provider
end
end

View file

@ -26,7 +26,7 @@
- @already_added_projects.each do |project|
%tr{id: "project_#{project.id}", class: "#{project_status_css_class(project.import_status)}"}
%td
= link_to project.import_source, "https://github.com/#{project.import_source}", target: "_blank"
= github_project_link(project.import_source)
%td
= link_to project.path_with_namespace, [project.namespace.becomes(Namespace), project]
%td.job-status
@ -43,7 +43,7 @@
- @repos.each do |repo|
%tr{id: "repo_#{repo.id}"}
%td
= link_to repo.full_name, "https://github.com/#{repo.full_name}", target: "_blank"
= github_project_link(repo.full_name)
%td.import-target
= repo.full_name
%td.import-actions.job-status

View file

@ -0,0 +1,25 @@
require 'rails_helper'
describe ImportHelper do
describe '#github_project_link' do
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.github_project_link('octocat/Hello-World')).
to include('href="https://github.com/octocat/Hello-World"')
end
end
context 'when provider specify a custom URL' do
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.github_project_link('octocat/Hello-World')).
to include('href="https://github.company.com/octocat/Hello-World"')
end
end
end
end