X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/53aa7259bb0612eb48a17d0b954ad71ea37d87a4..6cc31259e4e96784e4937c8c0ae561f8291ecaa2:/test/controllers/confirmations_controller_test.rb diff --git a/test/controllers/confirmations_controller_test.rb b/test/controllers/confirmations_controller_test.rb index 1ab4d253e..c8926eb75 100644 --- a/test/controllers/confirmations_controller_test.rb +++ b/test/controllers/confirmations_controller_test.rb @@ -13,7 +13,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest { :controller => "confirmations", :action => "confirm", :display_name => "username" } ) assert_routing( - { :path => "/user/username/confirm/resend", :method => :get }, + { :path => "/user/username/confirm/resend", :method => :post }, { :controller => "confirmations", :action => "confirm_resend", :display_name => "username" } ) @@ -38,8 +38,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest def test_confirm_get user = build(:user, :pending) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create.token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) get user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } assert_response :success @@ -50,8 +49,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create.token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) # Get the confirmation page get user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } @@ -64,7 +62,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest # Now try to get the confirmation page again get user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } - assert_response :redirect assert_redirected_to root_path end @@ -72,8 +69,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create.token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) post logout_path @@ -86,8 +82,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create.token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } assert_redirected_to welcome_path @@ -97,8 +92,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create.token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) post logout_path session_for(create(:user)) @@ -112,12 +106,11 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create(:referer => new_diary_entry_path).token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) post logout_path - post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string, :referer => new_diary_entry_path } assert_redirected_to login_path(:referer => new_diary_entry_path) assert_match(/Confirmed your account/, flash[:notice]) end @@ -126,10 +119,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create(:referer => new_diary_entry_path).token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) - post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string, :referer => new_diary_entry_path } assert_redirected_to new_diary_entry_path end @@ -137,13 +129,12 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create(:referer => new_diary_entry_path).token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) post logout_path session_for(create(:user)) - post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string, :referer => new_diary_entry_path } assert_redirected_to login_path(:referer => new_diary_entry_path) assert_match(/Confirmed your account/, flash[:notice]) end @@ -152,10 +143,11 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create(:expiry => 1.day.ago).token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) - post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + travel 2.weeks do + post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + end assert_redirected_to :action => "confirm" assert_match(/confirmation code has expired/, flash[:error]) end @@ -164,16 +156,15 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create(:referer => new_diary_entry_path).token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) - post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string, :referer => new_diary_entry_path } assert_redirected_to new_diary_entry_path post logout_path - confirm_string = User.find_by(:email => user.email).tokens.create(:referer => new_diary_entry_path).token - post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) + post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string, :referer => new_diary_entry_path } assert_redirected_to login_path assert_match(/already been confirmed/, flash[:error]) end @@ -182,14 +173,12 @@ class UsersControllerTest < ActionDispatch::IntegrationTest user = build(:user, :pending) stub_gravatar_request(user.email) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } - confirm_string = User.find_by(:email => user.email).tokens.create.token + confirm_string = User.find_by(:email => user.email).generate_token_for(:new_user) User.find_by(:display_name => user.display_name).hide! # Get the confirmation page get user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string } - assert_response :redirect assert_redirected_to root_path # Confirm the user @@ -201,15 +190,13 @@ class UsersControllerTest < ActionDispatch::IntegrationTest def test_confirm_resend_success user = build(:user, :pending) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } assert_difference "ActionMailer::Base.deliveries.size", 1 do perform_enqueued_jobs do - get user_confirm_resend_path(user) + post user_confirm_resend_path(user) end end - assert_response :redirect assert_redirected_to login_path assert_equal("confirmations/resend_success_flash", flash[:notice][:partial]) assert_equal({ :email => user.email, :sender => Settings.email_from }, flash[:notice][:locals]) @@ -221,36 +208,18 @@ class UsersControllerTest < ActionDispatch::IntegrationTest ActionMailer::Base.deliveries.clear end - def test_confirm_resend_no_token - user = build(:user, :pending) - # only complete first half of registration - post user_new_path, :params => { :user => user.attributes } - - assert_no_difference "ActionMailer::Base.deliveries.size" do - perform_enqueued_jobs do - get user_confirm_resend_path(user) - end - end - - assert_response :redirect - assert_redirected_to login_path - assert_match "User #{user.display_name} not found.", flash[:error] - end - def test_confirm_resend_deleted user = build(:user, :pending) post user_new_path, :params => { :user => user.attributes } - post user_save_path, :params => { :read_ct => 1, :read_tou => 1 } User.find_by(:display_name => user.display_name).hide! assert_no_difference "ActionMailer::Base.deliveries.size" do perform_enqueued_jobs do - get user_confirm_resend_path(user) + post user_confirm_resend_path(user) end end - assert_response :redirect assert_redirected_to login_path assert_match "User #{user.display_name} not found.", flash[:error] end @@ -258,18 +227,17 @@ class UsersControllerTest < ActionDispatch::IntegrationTest def test_confirm_resend_unknown_user assert_no_difference "ActionMailer::Base.deliveries.size" do perform_enqueued_jobs do - get user_confirm_resend_path(:display_name => "No Such User") + post user_confirm_resend_path(:display_name => "No Such User") end end - assert_response :redirect assert_redirected_to login_path assert_match "User No Such User not found.", flash[:error] end def test_confirm_email_get user = create(:user) - confirm_string = user.tokens.create.token + confirm_string = user.generate_token_for(:new_email) get user_confirm_email_path, :params => { :confirm_string => confirm_string } assert_response :success @@ -279,28 +247,25 @@ class UsersControllerTest < ActionDispatch::IntegrationTest def test_confirm_email_success user = create(:user, :new_email => "test-new@example.com") stub_gravatar_request(user.new_email) - confirm_string = user.tokens.create.token + confirm_string = user.generate_token_for(:new_email) post user_confirm_email_path, :params => { :confirm_string => confirm_string } - assert_response :redirect assert_redirected_to edit_account_path assert_match(/Confirmed your change of email address/, flash[:notice]) end def test_confirm_email_already_confirmed user = create(:user) - confirm_string = user.tokens.create.token + confirm_string = user.generate_token_for(:new_email) post user_confirm_email_path, :params => { :confirm_string => confirm_string } - assert_response :redirect assert_redirected_to edit_account_path assert_match(/already been confirmed/, flash[:error]) end def test_confirm_email_bad_token post user_confirm_email_path, :params => { :confirm_string => "XXXXX" } - assert_response :success - assert_template :confirm_email + assert_redirected_to edit_account_path assert_match(/confirmation code has expired or does not exist/, flash[:error]) end @@ -312,11 +277,10 @@ class UsersControllerTest < ActionDispatch::IntegrationTest # switch to email that has a gravatar user = create(:user, :new_email => "test-new@example.com") stub_gravatar_request(user.new_email, 200) - confirm_string = user.tokens.create.token + confirm_string = user.generate_token_for(:new_email) # precondition gravatar should be turned off assert_not user.image_use_gravatar post user_confirm_email_path, :params => { :confirm_string => confirm_string } - assert_response :redirect assert_redirected_to edit_account_path assert_match(/Confirmed your change of email address/, flash[:notice]) # gravatar use should now be enabled @@ -327,11 +291,10 @@ class UsersControllerTest < ActionDispatch::IntegrationTest # switch to email without a gravatar user = create(:user, :new_email => "test-new@example.com", :image_use_gravatar => true) stub_gravatar_request(user.new_email, 404) - confirm_string = user.tokens.create.token + confirm_string = user.generate_token_for(:new_email) # precondition gravatar should be turned on assert user.image_use_gravatar post user_confirm_email_path, :params => { :confirm_string => confirm_string } - assert_response :redirect assert_redirected_to edit_account_path assert_match(/Confirmed your change of email address/, flash[:notice]) # gravatar use should now be disabled