Add tests for change of gravatar use depending on email
This commit is contained in:
parent
8283a39dbc
commit
90b7101cc3
5 changed files with 77 additions and 6 deletions
|
@ -808,7 +808,7 @@ class UserController < ApplicationController
|
||||||
# code from example https://en.gravatar.com/site/implement/images/ruby/
|
# code from example https://en.gravatar.com/site/implement/images/ruby/
|
||||||
return if user.image.present?
|
return if user.image.present?
|
||||||
hash = Digest::MD5.hexdigest(user.email.downcase)
|
hash = Digest::MD5.hexdigest(user.email.downcase)
|
||||||
url = "https://www.gravatar.com/avatar/#{hash}?d=404" # without d=404 we will always get an image back
|
url = "https://www.gravatar.com/avatar/#{hash}?d=404" # without d=404 we will always get an image back
|
||||||
response = OSM.http_client.get(URI.parse(url))
|
response = OSM.http_client.get(URI.parse(url))
|
||||||
oldsetting = user.image_use_gravatar
|
oldsetting = user.image_use_gravatar
|
||||||
user.image_use_gravatar = response.success?
|
user.image_use_gravatar = response.success?
|
||||||
|
|
|
@ -523,7 +523,6 @@ class UserControllerTest < ActionController::TestCase
|
||||||
def test_confirm_email_success
|
def test_confirm_email_success
|
||||||
user = users(:second_public_user)
|
user = users(:second_public_user)
|
||||||
confirm_string = user.tokens.create.token
|
confirm_string = user.tokens.create.token
|
||||||
|
|
||||||
post :confirm_email, :confirm_string => confirm_string
|
post :confirm_email, :confirm_string => confirm_string
|
||||||
assert_response :redirect
|
assert_response :redirect
|
||||||
assert_redirected_to :action => :account, :display_name => user.display_name
|
assert_redirected_to :action => :account, :display_name => user.display_name
|
||||||
|
@ -547,6 +546,42 @@ class UserControllerTest < ActionController::TestCase
|
||||||
assert_match /confirmation code has expired or does not exist/, flash[:error]
|
assert_match /confirmation code has expired or does not exist/, flash[:error]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# test if testing for a gravatar works
|
||||||
|
# this happens when the email is actually changed
|
||||||
|
# which is triggered by the confirmation mail
|
||||||
|
def test_gravatar_auto_enable
|
||||||
|
with_http_stubs "gravatar" do
|
||||||
|
# switch to email that has a gravatar
|
||||||
|
user = users(:first_gravatar_user)
|
||||||
|
confirm_string = user.tokens.create.token
|
||||||
|
# precondition gravatar should be turned off
|
||||||
|
assert !user.image_use_gravatar
|
||||||
|
post :confirm_email, :confirm_string => confirm_string
|
||||||
|
assert_response :redirect
|
||||||
|
assert_redirected_to :action => :account, :display_name => user.display_name
|
||||||
|
assert_match /Confirmed your change of email address/, flash[:notice]
|
||||||
|
# gravatar use should now be enabled
|
||||||
|
assert User.find(users(:first_gravatar_user).id).image_use_gravatar
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_gravatar_auto_disable
|
||||||
|
with_http_stubs "gravatar" do
|
||||||
|
# switch to email without a gravatar
|
||||||
|
user = users(:second_gravatar_user)
|
||||||
|
confirm_string = user.tokens.create.token
|
||||||
|
# precondition gravatar should be turned on
|
||||||
|
assert user.image_use_gravatar
|
||||||
|
post :confirm_email, :confirm_string => confirm_string
|
||||||
|
assert_response :redirect
|
||||||
|
assert_redirected_to :action => :account, :display_name => user.display_name
|
||||||
|
assert_match /Confirmed your change of email address/, flash[:notice]
|
||||||
|
# gravatar use should now be disabled
|
||||||
|
assert !User.find(users(:second_gravatar_user).id).image_use_gravatar
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_terms_new_user
|
def test_terms_new_user
|
||||||
get :terms, {}, { :new_user => User.new }
|
get :terms, {}, { :new_user => User.new }
|
||||||
assert_response :success
|
assert_response :success
|
||||||
|
@ -1334,7 +1369,7 @@ class UserControllerTest < ActionController::TestCase
|
||||||
get :list, :page => 3
|
get :list, :page => 3
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template :list
|
assert_template :list
|
||||||
assert_select "table#user_list tr", :count => 23
|
assert_select "table#user_list tr", :count => 25
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_list_post_confirm
|
def test_list_post_confirm
|
||||||
|
|
29
test/fixtures/users.yml
vendored
29
test/fixtures/users.yml
vendored
|
@ -304,3 +304,32 @@ github_user:
|
||||||
terms_agreed: "2010-01-01 11:22:33"
|
terms_agreed: "2010-01-01 11:22:33"
|
||||||
terms_seen: true
|
terms_seen: true
|
||||||
languages: en
|
languages: en
|
||||||
|
|
||||||
|
first_gravatar_user:
|
||||||
|
id: 23
|
||||||
|
email: g1@OpenStreetMap.org
|
||||||
|
new_email: new_g1@OpenStreetMap.org
|
||||||
|
status: active
|
||||||
|
pass_crypt: <%= Digest::MD5.hexdigest('test') %>
|
||||||
|
creation_time: "2008-05-01 01:23:45"
|
||||||
|
display_name: gravatar1
|
||||||
|
data_public: true
|
||||||
|
description: some test description
|
||||||
|
terms_agreed: "2010-01-01 11:22:33"
|
||||||
|
terms_seen: true
|
||||||
|
creation_ip: "1.2.3.4"
|
||||||
|
|
||||||
|
second_gravatar_user:
|
||||||
|
id: 24
|
||||||
|
email: g2@OpenStreetMap.org
|
||||||
|
new_email: new_g2@OpenStreetMap.org
|
||||||
|
image_use_gravatar: true
|
||||||
|
status: active
|
||||||
|
pass_crypt: <%= Digest::MD5.hexdigest('test') %>
|
||||||
|
creation_time: "2008-05-01 01:23:45"
|
||||||
|
display_name: gravatar2
|
||||||
|
data_public: true
|
||||||
|
description: some test description
|
||||||
|
terms_agreed: "2010-01-01 11:22:33"
|
||||||
|
terms_seen: true
|
||||||
|
creation_ip: "1.2.3.4"
|
||||||
|
|
7
test/http/gravatar.yml
Normal file
7
test/http/gravatar.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
/avatar/842bc90353fac655450e62223e4e105d?d=404 :
|
||||||
|
code: 404
|
||||||
|
body: Ignored, test for new_g2@openstreetmap.org
|
||||||
|
|
||||||
|
/avatar/d2e95ef0ac6933916bf42ff1ee4eca4b?d=404 :
|
||||||
|
code: 200
|
||||||
|
body: Ignored, test for new_g1@openstreetmap.org
|
|
@ -163,7 +163,7 @@ class UserTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_visible
|
def test_visible
|
||||||
assert_equal 20, User.visible.count
|
assert_equal 22, User.visible.count
|
||||||
assert_raise ActiveRecord::RecordNotFound do
|
assert_raise ActiveRecord::RecordNotFound do
|
||||||
User.visible.find(users(:suspended_user).id)
|
User.visible.find(users(:suspended_user).id)
|
||||||
end
|
end
|
||||||
|
@ -173,7 +173,7 @@ class UserTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_active
|
def test_active
|
||||||
assert_equal 19, User.active.count
|
assert_equal 21, User.active.count
|
||||||
assert_raise ActiveRecord::RecordNotFound do
|
assert_raise ActiveRecord::RecordNotFound do
|
||||||
User.active.find(users(:inactive_user).id)
|
User.active.find(users(:inactive_user).id)
|
||||||
end
|
end
|
||||||
|
@ -186,7 +186,7 @@ class UserTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_identifiable
|
def test_identifiable
|
||||||
assert_equal 21, User.identifiable.count
|
assert_equal 23, User.identifiable.count
|
||||||
assert_raise ActiveRecord::RecordNotFound do
|
assert_raise ActiveRecord::RecordNotFound do
|
||||||
User.identifiable.find(users(:normal_user).id)
|
User.identifiable.find(users(:normal_user).id)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue