diff --git a/app/views/common/feed.atom.builder b/app/views/common/feed.atom.builder index 804ecfd0e..023c15601 100644 --- a/app/views/common/feed.atom.builder +++ b/app/views/common/feed.atom.builder @@ -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 diff --git a/test/functional/activities_controller_test.rb b/test/functional/activities_controller_test.rb index dc1a9499e..29fca5cda 100644 --- a/test/functional/activities_controller_test.rb +++ b/test/functional/activities_controller_test.rb @@ -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 diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index a33605bf9..fcfb6821f 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -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