Use SSL for gravatars according to the protocol in settings (#9365).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10184 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2012-08-09 18:04:54 +00:00
parent e06bf0c464
commit cbfafcd5e2
2 changed files with 31 additions and 19 deletions

View 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>') # +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 = { }) def avatar(user, options = { })
if Setting.gravatar_enabled? 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 email = nil
if user.respond_to?(:mail) if user.respond_to?(:mail)
email = user.mail email = user.mail

View File

@ -970,25 +970,37 @@ RAW
end end
end end
def test_avatar def test_avatar_enabled
# turn on avatars with_settings :gravatar_enabled => '1' do
Setting.gravatar_enabled = '1' assert avatar(User.find_by_mail('jsmith@somenet.foo')).include?(Digest::MD5.hexdigest('jsmith@somenet.foo'))
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'))
assert avatar('jsmith <jsmith@somenet.foo>').include?(Digest::MD5.hexdigest('jsmith@somenet.foo')) # Default size is 50
# Default size is 50 assert avatar('jsmith <jsmith@somenet.foo>').include?('size=50')
assert avatar('jsmith <jsmith@somenet.foo>').include?('size=50') assert avatar('jsmith <jsmith@somenet.foo>', :size => 24).include?('size=24')
assert avatar('jsmith <jsmith@somenet.foo>', :size => 24).include?('size=24') # Non-avatar options should be considered html options
# Non-avatar options should be considered html options assert avatar('jsmith <jsmith@somenet.foo>', :title => 'John Smith').include?('title="John Smith"')
assert avatar('jsmith <jsmith@somenet.foo>', :title => 'John Smith').include?('title="John Smith"') # The default class of the img tag should be gravatar
# 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>').include?('class="gravatar"') assert !avatar('jsmith <jsmith@somenet.foo>', :class => 'picture').include?('class="gravatar"')
assert !avatar('jsmith <jsmith@somenet.foo>', :class => 'picture').include?('class="gravatar"') assert_nil avatar('jsmith')
assert_nil avatar('jsmith') assert_nil avatar(nil)
assert_nil avatar(nil) end
end
# turn off avatars def test_avatar_should_use_ssl_if_protocol_is_https
Setting.gravatar_enabled = '0' with_settings :gravatar_enabled => '1', :protocol => 'https' do
assert_equal '', avatar(User.find_by_mail('jsmith@somenet.foo')) 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 end
def test_link_to_user def test_link_to_user