X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/0e78061cdba5cfb3f299f57b7643d2b396ee235b..703990a5bbdcdb782ef85983b960253aecc3e163:/test/controllers/confirmations_controller_test.rb?ds=sidebyside diff --git a/test/controllers/confirmations_controller_test.rb b/test/controllers/confirmations_controller_test.rb index bae0158cd..79213441f 100644 --- a/test/controllers/confirmations_controller_test.rb +++ b/test/controllers/confirmations_controller_test.rb @@ -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).update(:status => "deleted") + 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,7 +190,6 @@ 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 @@ -209,9 +197,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest end end - assert_response :redirect assert_redirected_to login_path - assert_match(/sent a new confirmation/, flash[:notice]) + assert_equal("confirmations/resend_success_flash", flash[:notice][:partial]) + assert_equal({ :email => user.email, :sender => Settings.email_from }, flash[:notice][:locals]) email = ActionMailer::Base.deliveries.last @@ -220,28 +208,11 @@ 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).update(:status => "deleted") + User.find_by(:display_name => user.display_name).hide! assert_no_difference "ActionMailer::Base.deliveries.size" do perform_enqueued_jobs do @@ -249,7 +220,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest end end - assert_response :redirect assert_redirected_to login_path assert_match "User #{user.display_name} not found.", flash[:error] end @@ -261,14 +231,13 @@ class UsersControllerTest < ActionDispatch::IntegrationTest 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 @@ -278,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 :controller => :users, :action => :account, :display_name => user.display_name + 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 :controller => :users, :action => :account, :display_name => user.display_name + 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 @@ -311,12 +277,11 @@ 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 :controller => :users, :action => :account, :display_name => user.display_name + assert_redirected_to edit_account_path assert_match(/Confirmed your change of email address/, flash[:notice]) # gravatar use should now be enabled assert User.find(user.id).image_use_gravatar @@ -326,12 +291,11 @@ 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 :controller => :users, :action => :account, :display_name => user.display_name + assert_redirected_to edit_account_path assert_match(/Confirmed your change of email address/, flash[:notice]) # gravatar use should now be disabled assert_not User.find(user.id).image_use_gravatar