# code from example https://en.gravatar.com/site/implement/images/ruby/
return if user.image.present?
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))
oldsetting = user.image_use_gravatar
user.image_use_gravatar = response.success?
def test_confirm_email_success
user = users(:second_public_user)
confirm_string = user.tokens.create.token
-
post :confirm_email, :confirm_string => confirm_string
assert_response :redirect
assert_redirected_to :action => :account, :display_name => user.display_name
assert_match /confirmation code has expired or does not exist/, flash[:error]
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
get :terms, {}, { :new_user => User.new }
assert_response :success
get :list, :page => 3
assert_response :success
assert_template :list
- assert_select "table#user_list tr", :count => 23
+ assert_select "table#user_list tr", :count => 25
end
def test_list_post_confirm
terms_agreed: "2010-01-01 11:22:33"
terms_seen: true
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"
end
def test_visible
- assert_equal 20, User.visible.count
+ assert_equal 22, User.visible.count
assert_raise ActiveRecord::RecordNotFound do
User.visible.find(users(:suspended_user).id)
end
end
def test_active
- assert_equal 19, User.active.count
+ assert_equal 21, User.active.count
assert_raise ActiveRecord::RecordNotFound do
User.active.find(users(:inactive_user).id)
end
end
def test_identifiable
- assert_equal 21, User.identifiable.count
+ assert_equal 23, User.identifiable.count
assert_raise ActiveRecord::RecordNotFound do
User.identifiable.find(users(:normal_user).id)
end