summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dzaporozhets@gitlab.com>2015-02-24 06:53:19 +0000
committerDmitriy Zaporozhets <dzaporozhets@gitlab.com>2015-02-24 06:53:19 +0000
commitc2788e4aa9444e7c1c91475050751ab987de64ee (patch)
treed2d38342450cbee71ffdcb0c0d4f29ba17990f32
parentbcc8dbd0659b89a20f6cbd955c7022ea09dd0172 (diff)
parent6327dd0e9d25efad4f83b1dfe5d730eb0a4cff2f (diff)
downloadgitlab-ce-c2788e4aa9444e7c1c91475050751ab987de64ee.tar.gz
Merge branch 'url_links_with_relative_url' into '7-8-stable'
Fix links to issues if instance is using relative urls. Fix for https://github.com/gitlabhq/gitlabhq/issues/8767 See merge request !1574
-rw-r--r--app/models/project_services/gitlab_issue_tracker_service.rb12
-rw-r--r--spec/helpers/gitlab_markdown_helper_spec.rb6
-rw-r--r--spec/models/project_services/gitlab_issue_tracker_service_spec.rb60
3 files changed, 72 insertions, 6 deletions
diff --git a/app/models/project_services/gitlab_issue_tracker_service.rb b/app/models/project_services/gitlab_issue_tracker_service.rb
index b1eab24df19..dca05e9f78d 100644
--- a/app/models/project_services/gitlab_issue_tracker_service.rb
+++ b/app/models/project_services/gitlab_issue_tracker_service.rb
@@ -27,14 +27,20 @@ class GitlabIssueTrackerService < IssueTrackerService
end
def project_url
- project_issues_path(project)
+ "#{gitlab_url}#{project_issues_path(project)}"
end
def new_issue_url
- new_project_issue_path project_id: project
+ "#{gitlab_url}#{new_project_issue_path(project_id: project)}"
end
def issue_url(iid)
- "#{Gitlab.config.gitlab.url}#{project_issue_path(project_id: project, id: iid)}"
+ "#{gitlab_url}#{project_issue_path(project_id: project, id: iid)}"
+ end
+
+ private
+
+ def gitlab_url
+ Gitlab.config.gitlab.relative_url_root.chomp("/") if Gitlab.config.gitlab.relative_url_root
end
end
diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb
index ab908a3d61e..b58b8b4684f 100644
--- a/spec/helpers/gitlab_markdown_helper_spec.rb
+++ b/spec/helpers/gitlab_markdown_helper_spec.rb
@@ -474,7 +474,7 @@ describe GitlabMarkdownHelper do
# First issue link
expect(groups[1]).
- to match(/href="#{project_issue_url(project, issues[0])}"/)
+ to match(/href="#{project_issue_path(project, issues[0])}"/)
expect(groups[1]).to match(/##{issues[0].iid}$/)
# Internal commit link
@@ -483,7 +483,7 @@ describe GitlabMarkdownHelper do
# Second issue link
expect(groups[3]).
- to match(/href="#{project_issue_url(project, issues[1])}"/)
+ to match(/href="#{project_issue_path(project, issues[1])}"/)
expect(groups[3]).to match(/##{issues[1].iid}$/)
# Trailing commit link
@@ -611,7 +611,7 @@ describe GitlabMarkdownHelper do
end
it "should generate absolute urls for refs" do
- expect(markdown("##{issue.iid}")).to include(project_issue_url(project, issue))
+ expect(markdown("##{issue.iid}")).to include(project_issue_path(project, issue))
end
it "should generate absolute urls for emoji" do
diff --git a/spec/models/project_services/gitlab_issue_tracker_service_spec.rb b/spec/models/project_services/gitlab_issue_tracker_service_spec.rb
new file mode 100644
index 00000000000..c474f4a2d95
--- /dev/null
+++ b/spec/models/project_services/gitlab_issue_tracker_service_spec.rb
@@ -0,0 +1,60 @@
+# == Schema Information
+#
+# Table name: services
+#
+# id :integer not null, primary key
+# type :string(255)
+# title :string(255)
+# project_id :integer
+# created_at :datetime
+# updated_at :datetime
+# active :boolean default(FALSE), not null
+# properties :text
+# template :boolean default(FALSE)
+#
+require 'spec_helper'
+
+describe GitlabIssueTrackerService do
+ describe "Associations" do
+ it { is_expected.to belong_to :project }
+ it { is_expected.to have_one :service_hook }
+ end
+
+
+ describe 'project and issue urls' do
+ let(:project) { create(:project) }
+
+ context 'with absolute urls' do
+ before do
+ @service = project.create_gitlab_issue_tracker_service(active: true)
+ end
+
+ after do
+ @service.destroy!
+ end
+
+ it 'should give the correct path' do
+ expect(@service.project_url).to eq("/#{project.path_with_namespace}/issues")
+ expect(@service.new_issue_url).to eq("/#{project.path_with_namespace}/issues/new")
+ expect(@service.issue_url(432)).to eq("/#{project.path_with_namespace}/issues/432")
+ end
+ end
+
+ context 'with enabled relative urls' do
+ before do
+ Settings.gitlab.stub(:relative_url_root).and_return("/gitlab/root")
+ @service = project.create_gitlab_issue_tracker_service(active: true)
+ end
+
+ after do
+ @service.destroy!
+ end
+
+ it 'should give the correct path' do
+ expect(@service.project_url).to eq("/gitlab/root/#{project.path_with_namespace}/issues")
+ expect(@service.new_issue_url).to eq("/gitlab/root/#{project.path_with_namespace}/issues/new")
+ expect(@service.issue_url(432)).to eq("/gitlab/root/#{project.path_with_namespace}/issues/432")
+ end
+ end
+ end
+end