]> source.dussan.org Git - redmine.git/commitdiff
Use SSL for gravatars according to the protocol in settings (#9365).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 9 Aug 2012 18:04:54 +0000 (18:04 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 9 Aug 2012 18:04:54 +0000 (18:04 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10184 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
test/unit/helpers/application_helper_test.rb

index 983f3fd8be9aca5c1ccfb57ef5a1bda1ca9e4c84..cbdbcca4ea4a70df2d8ca08b8992a6b0871ac84e 100644 (file)
@@ -1134,7 +1134,7 @@ module ApplicationHelper
   # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe <joe@foo.bar>')
   def avatar(user, options = { })
     if Setting.gravatar_enabled?
-      options.merge!({:ssl => (request && request.ssl?), :default => Setting.gravatar_default})
+      options.merge!({:ssl => (Setting.protocol == 'https'), :default => Setting.gravatar_default})
       email = nil
       if user.respond_to?(:mail)
         email = user.mail
index b3757b092fe5af0de33a7976d656eab1375acc96..edb01ea6d69d3dae680e3d0f6ff64e84b7bdcd72 100644 (file)
@@ -970,25 +970,37 @@ RAW
     end
   end
 
-  def test_avatar
-    # turn on avatars
-    Setting.gravatar_enabled = '1'
-    assert avatar(User.find_by_mail('jsmith@somenet.foo')).include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
-    assert avatar('jsmith <jsmith@somenet.foo>').include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
-    # Default size is 50
-    assert avatar('jsmith <jsmith@somenet.foo>').include?('size=50')
-    assert avatar('jsmith <jsmith@somenet.foo>', :size => 24).include?('size=24')
-    # Non-avatar options should be considered html options
-    assert avatar('jsmith <jsmith@somenet.foo>', :title => 'John Smith').include?('title="John Smith"')
-    # The default class of the img tag should be gravatar
-    assert avatar('jsmith <jsmith@somenet.foo>').include?('class="gravatar"')
-    assert !avatar('jsmith <jsmith@somenet.foo>', :class => 'picture').include?('class="gravatar"')
-    assert_nil avatar('jsmith')
-    assert_nil avatar(nil)
-
-    # turn off avatars
-    Setting.gravatar_enabled = '0'
-    assert_equal '', avatar(User.find_by_mail('jsmith@somenet.foo'))
+  def test_avatar_enabled
+    with_settings :gravatar_enabled => '1' do
+      assert avatar(User.find_by_mail('jsmith@somenet.foo')).include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
+      assert avatar('jsmith <jsmith@somenet.foo>').include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
+      # Default size is 50
+      assert avatar('jsmith <jsmith@somenet.foo>').include?('size=50')
+      assert avatar('jsmith <jsmith@somenet.foo>', :size => 24).include?('size=24')
+      # Non-avatar options should be considered html options
+      assert avatar('jsmith <jsmith@somenet.foo>', :title => 'John Smith').include?('title="John Smith"')
+      # The default class of the img tag should be gravatar
+      assert avatar('jsmith <jsmith@somenet.foo>').include?('class="gravatar"')
+      assert !avatar('jsmith <jsmith@somenet.foo>', :class => 'picture').include?('class="gravatar"')
+      assert_nil avatar('jsmith')
+      assert_nil avatar(nil)
+    end
+  end
+
+  def test_avatar_should_use_ssl_if_protocol_is_https
+    with_settings :gravatar_enabled => '1', :protocol => 'https' do
+      assert_include 'https://', avatar(User.find_by_mail('jsmith@somenet.foo'))
+    end
+
+    with_settings :gravatar_enabled => '1', :protocol => 'http' do
+      assert_include 'http://', avatar(User.find_by_mail('jsmith@somenet.foo'))
+    end
+  end
+
+  def test_avatar_disabled
+    with_settings :gravatar_enabled => '0' do
+      assert_equal '', avatar(User.find_by_mail('jsmith@somenet.foo'))
+    end
   end
 
   def test_link_to_user