X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/ddaf43bc0ecc59f9417118000bb8d2f041cfe6bf..d3d6e9902c8b03fcd31df253cf395f06f757880a:/test/controllers/user_controller_test.rb diff --git a/test/controllers/user_controller_test.rb b/test/controllers/user_controller_test.rb index 7a1310d6e..cc8142b01 100644 --- a/test/controllers/user_controller_test.rb +++ b/test/controllers/user_controller_test.rb @@ -2,7 +2,10 @@ require "test_helper" class UserControllerTest < ActionController::TestCase api_fixtures - fixtures :messages, :friends + + setup do + stub_request(:get, "http://api.hostip.info/country.php?ip=0.0.0.0") + end ## # test all routes which lead to this controller @@ -474,6 +477,8 @@ class UserControllerTest < ActionController::TestCase end def test_confirm_resend_success + session[:token] = users(:inactive_user).tokens.create.token + assert_difference "ActionMailer::Base.deliveries.size", 1 do get :confirm_resend, :display_name => users(:inactive_user).display_name end @@ -489,7 +494,17 @@ class UserControllerTest < ActionController::TestCase ActionMailer::Base.deliveries.clear end - def test_confirm_resend_failure + def test_confirm_resend_no_token + assert_no_difference "ActionMailer::Base.deliveries.size" do + get :confirm_resend, :display_name => users(:inactive_user).display_name + end + + assert_response :redirect + assert_redirected_to login_path + assert_match "User Inactive User not found.", flash[:error] + end + + def test_confirm_resend_unknown_user assert_no_difference "ActionMailer::Base.deliveries.size" do get :confirm_resend, :display_name => "No Such User" end @@ -535,6 +550,42 @@ class UserControllerTest < ActionController::TestCase 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 @@ -690,7 +741,8 @@ class UserControllerTest < ActionController::TestCase # Test setting a new password post :reset_password, :token => token.token, :user => { :pass_crypt => "new_password", :pass_crypt_confirmation => "new_password" } assert_response :redirect - assert_redirected_to :action => :login + assert_redirected_to root_path + assert_equal users(:inactive_user).id, session[:user] user = User.find(users(:inactive_user).id) assert_equal "active", user.status assert_equal true, user.email_valid @@ -875,6 +927,7 @@ class UserControllerTest < ActionController::TestCase end # Test a user who has been blocked + create(:user_block, :user => users(:blocked_user)) get :view, :display_name => "blocked" assert_response :success assert_select "div#userinformation" do @@ -889,6 +942,7 @@ class UserControllerTest < ActionController::TestCase end # Test a moderator who has applied blocks + create(:user_block, :creator => users(:moderator_user)) get :view, :display_name => "moderator" assert_response :success assert_select "div#userinformation" do @@ -948,7 +1002,7 @@ class UserControllerTest < ActionController::TestCase assert_select "contributor-terms", :count => 1 do assert_select "[agreed='true']" end - assert_select "img", :count => 1 + assert_select "img", :count => 0 assert_select "roles", :count => 1 do assert_select "role", :count => 0 end @@ -985,6 +1039,8 @@ class UserControllerTest < ActionController::TestCase end def test_api_details + create(:message, :read, :recipient => users(:normal_user)) + # check that nothing is returned when not logged in get :api_details assert_response :unauthorized @@ -1000,7 +1056,7 @@ class UserControllerTest < ActionController::TestCase assert_select "contributor-terms", :count => 1 do assert_select "[agreed='true'][pd='false']" end - assert_select "img", :count => 1 + assert_select "img", :count => 0 assert_select "roles", :count => 1 do assert_select "role", :count => 0 end @@ -1142,6 +1198,7 @@ class UserControllerTest < ActionController::TestCase # Get users to work with user = users(:normal_user) friend = users(:public_user) + create(:friend, :befriender => user, :befriendee => friend) # Check that the users are friends assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first @@ -1182,6 +1239,7 @@ class UserControllerTest < ActionController::TestCase # Get users to work with user = users(:normal_user) friend = users(:public_user) + create(:friend, :user_id => user.id, :friend_user_id => friend.id) # Check that the users are friends assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first @@ -1321,7 +1379,7 @@ class UserControllerTest < ActionController::TestCase get :list, :page => 3 assert_response :success assert_template :list - assert_select "table#user_list tr", :count => 20 + assert_select "table#user_list tr", :count => 25 end def test_list_post_confirm