]> source.dussan.org Git - redmine.git/commitdiff
Incorrect links generated in emails if host setup uses other port (#19323).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 14 Mar 2015 08:52:48 +0000 (08:52 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 14 Mar 2015 08:52:48 +0000 (08:52 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@14081 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/mailer.rb
test/unit/mailer_test.rb

index 31ae03b8a0fff88bad626a80de45c5b679a23ce6..9953ea50954c8ac113125973c202126a632d8c91 100644 (file)
@@ -24,7 +24,16 @@ class Mailer < ActionMailer::Base
   include Redmine::I18n
 
   def self.default_url_options
-    { :host => Setting.host_name, :protocol => Setting.protocol }
+    options = {:protocol => Setting.protocol}
+    if Setting.host_name.to_s =~ /\A(https?\:\/\/)?(.+?)(\:(\d+))?(\/.+)?\z/i
+      host, port, prefix = $2, $4, $5
+      options.merge!({
+        :host => host, :port => port, :script_name => prefix
+      })
+    else
+      options[:host] = Setting.host_name
+    end
+    options
   end
 
   # Builds a mail for notifying to_users and cc_users about a new issue
index 3dd2a2963fc46fa193cdc2b8389d24dfa958f974..52b6a62ee478ba2dd8afe067b19aece6ac36455c 100644 (file)
@@ -119,6 +119,24 @@ class MailerTest < ActiveSupport::TestCase
     end
   end
 
+  def test_generated_links_with_port_and_prefix
+    with_settings :host_name => '10.0.0.1:81/redmine', :protocol => 'http' do
+      Mailer.test_email(User.find(1)).deliver
+      mail = last_email
+      assert_not_nil mail
+      assert_include 'http://10.0.0.1:81/redmine', mail_body(mail)
+    end
+  end
+
+  def test_generated_links_with_port
+    with_settings :host_name => '10.0.0.1:81', :protocol => 'http' do
+      Mailer.test_email(User.find(1)).deliver
+      mail = last_email
+      assert_not_nil mail
+      assert_include 'http://10.0.0.1:81', mail_body(mail)
+    end
+  end
+
   def test_issue_edit_should_generate_url_with_hostname_for_relations
     journal = Journal.new(:journalized => Issue.find(1), :user => User.find(1), :created_on => Time.now)
     journal.details << JournalDetail.new(:property => 'relation', :prop_key => 'label_relates_to', :value => 2)