]> source.dussan.org Git - redmine.git/commitdiff
URLs in atom feeds don't take into account Setting.protocol and Setting.hostname...
authorGo MAEDA <maeda@farend.jp>
Thu, 4 Jun 2020 14:23:03 +0000 (14:23 +0000)
committerGo MAEDA <maeda@farend.jp>
Thu, 4 Jun 2020 14:23:03 +0000 (14:23 +0000)
Patch by Go MAEDA.

git-svn-id: http://svn.redmine.org/redmine/trunk@19810 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/common/feed.atom.builder
test/functional/activities_controller_test.rb
test/functional/issues_controller_test.rb

index 804ecfd0e7ffe4e5258e72fc773888675f7f1720..023c15601116d86018a388cd33ed55ea80bfe16d 100644 (file)
@@ -1,10 +1,12 @@
 # frozen_string_literal: true
 
+protocol = Setting.protocol
+host = Setting.host_name
 xml.instruct!
 xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
   xml.title   truncate_single_line_raw(@title, 100)
-  xml.link    "rel" => "self", "href" => url_for(:params => request.query_parameters, :only_path => false, :format => 'atom')
-  xml.link    "rel" => "alternate", "href" => url_for(:params => request.query_parameters.merge(:format => nil, :key => nil), :only_path => false)
+  xml.link    "rel" => "self", "href" => url_for(:params => request.query_parameters, :only_path => false, :format => 'atom', :protocol => protocol, :host => host)
+  xml.link    "rel" => "alternate", "href" => url_for(:params => request.query_parameters.merge(:format => nil, :key => nil), :only_path => false, :protocol => protocol, :host => host)
   xml.id      home_url
   xml.icon    favicon_url
   xml.updated((@items.first ? @items.first.event_datetime : Time.now).xmlschema)
@@ -12,7 +14,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
   xml.generator(:uri => Redmine::Info.url) { xml.text! Redmine::Info.app_name; }
   @items.each do |item|
     xml.entry do
-      url = url_for(item.event_url(:only_path => false))
+      url = url_for(item.event_url(:only_path => false, :protocol => protocol, :host => host))
       if @project
         xml.title truncate_single_line_raw(item.event_title, 100)
       else
index dc1a9499e9001761320e05c58062bd8322a0873c..29fca5cdaec810fdc1ddd594680ce61de0270173 100644 (file)
@@ -106,47 +106,51 @@ class ActivitiesControllerTest < Redmine::ControllerTest
   end
 
   def test_index_atom_feed
-    get(
-      :index,
-      :params => {
-        :format => 'atom',
-        :with_subprojects => 0
-      }
-    )
+    with_settings :protocol => 'http', :host_name => 'redmine.test' do
+      get(
+        :index,
+        :params => {
+          :format => 'atom',
+          :with_subprojects => 0
+        }
+      )
+    end
     assert_response :success
 
     assert_select 'feed' do
-      assert_select 'link[rel=self][href=?]', 'http://test.host/activity.atom?with_subprojects=0'
-      assert_select 'link[rel=alternate][href=?]', 'http://test.host/activity?with_subprojects=0'
+      assert_select 'link[rel=self][href=?]', 'http://redmine.test/activity.atom?with_subprojects=0'
+      assert_select 'link[rel=alternate][href=?]', 'http://redmine.test/activity?with_subprojects=0'
       assert_select 'entry' do
-        assert_select 'link[href=?]', 'http://test.host/issues/11'
+        assert_select 'link[href=?]', 'http://redmine.test/issues/11'
       end
     end
   end
 
   def test_index_atom_feed_with_explicit_selection
-    get(
-      :index,
-      :params => {
-        :format => 'atom',
-        :with_subprojects => 0,
-        :show_changesets => 1,
-        :show_documents => 1,
-        :show_files => 1,
-        :show_issues => 1,
-        :show_messages => 1,
-        :show_news => 1,
-        :show_time_entries => 1,
-        :show_wiki_edits => 1
-      }
-    )
+    with_settings :protocol => 'https', :host_name => 'redmine.example' do
+      get(
+        :index,
+        :params => {
+          :format => 'atom',
+          :with_subprojects => 0,
+          :show_changesets => 1,
+          :show_documents => 1,
+          :show_files => 1,
+          :show_issues => 1,
+          :show_messages => 1,
+          :show_news => 1,
+          :show_time_entries => 1,
+          :show_wiki_edits => 1
+        }
+      )
+    end
     assert_response :success
 
     assert_select 'feed' do
-      assert_select 'link[rel=self][href=?]', 'http://test.host/activity.atom?show_changesets=1&show_documents=1&show_files=1&show_issues=1&show_messages=1&show_news=1&show_time_entries=1&show_wiki_edits=1&with_subprojects=0'
-      assert_select 'link[rel=alternate][href=?]', 'http://test.host/activity?show_changesets=1&show_documents=1&show_files=1&show_issues=1&show_messages=1&show_news=1&show_time_entries=1&show_wiki_edits=1&with_subprojects=0'
+      assert_select 'link[rel=self][href=?]', 'https://redmine.example/activity.atom?show_changesets=1&show_documents=1&show_files=1&show_issues=1&show_messages=1&show_news=1&show_time_entries=1&show_wiki_edits=1&with_subprojects=0'
+      assert_select 'link[rel=alternate][href=?]', 'https://redmine.example/activity?show_changesets=1&show_documents=1&show_files=1&show_issues=1&show_messages=1&show_news=1&show_time_entries=1&show_wiki_edits=1&with_subprojects=0'
       assert_select 'entry' do
-        assert_select 'link[href=?]', 'http://test.host/issues/11'
+        assert_select 'link[href=?]', 'https://redmine.example/issues/11'
       end
     end
   end
index a33605bf999d4e20febf20c27150eb60a0e8edf8..fcfb6821f02aecea54359284f44b7a8480b55265 100644 (file)
@@ -1138,20 +1138,22 @@ class IssuesControllerTest < Redmine::ControllerTest
   end
 
   def test_index_atom
-    get(
-      :index,
-      :params => {
-        :project_id => 'ecookbook',
-        :format => 'atom'
-      }
-    )
+    with_settings :protocol => 'https', :host_name => 'example.net' do
+      get(
+        :index,
+        :params => {
+          :project_id => 'ecookbook',
+          :format => 'atom'
+        }
+      )
+    end
     assert_response :success
     assert_equal 'application/atom+xml', response.media_type
 
     assert_select 'feed' do
-      assert_select 'link[rel=self][href=?]', 'http://test.host/projects/ecookbook/issues.atom'
-      assert_select 'link[rel=alternate][href=?]', 'http://test.host/projects/ecookbook/issues'
-      assert_select 'entry link[href=?]', 'http://test.host/issues/1'
+      assert_select 'link[rel=self][href=?]', 'https://example.net/projects/ecookbook/issues.atom'
+      assert_select 'link[rel=alternate][href=?]', 'https://example.net/projects/ecookbook/issues'
+      assert_select 'entry link[href=?]', 'https://example.net/issues/1'
     end
   end