]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/users_controller_test.rb
Merge remote-tracking branch 'upstream/pull/3257'
[rails.git] / test / controllers / users_controller_test.rb
index 5059ff698c2f9f9452a469a881d18a26b3a53d4b..a73e48211f45dcc5a88533f8e43a19b3f8b8940a 100644 (file)
@@ -24,36 +24,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
       { :controller => "users", :action => "save" }
     )
 
-    assert_routing(
-      { :path => "/user/username/confirm", :method => :get },
-      { :controller => "users", :action => "confirm", :display_name => "username" }
-    )
-    assert_routing(
-      { :path => "/user/username/confirm", :method => :post },
-      { :controller => "users", :action => "confirm", :display_name => "username" }
-    )
-    assert_routing(
-      { :path => "/user/username/confirm/resend", :method => :get },
-      { :controller => "users", :action => "confirm_resend", :display_name => "username" }
-    )
-
-    assert_routing(
-      { :path => "/user/confirm", :method => :get },
-      { :controller => "users", :action => "confirm" }
-    )
-    assert_routing(
-      { :path => "/user/confirm", :method => :post },
-      { :controller => "users", :action => "confirm" }
-    )
-    assert_routing(
-      { :path => "/user/confirm-email", :method => :get },
-      { :controller => "users", :action => "confirm_email" }
-    )
-    assert_routing(
-      { :path => "/user/confirm-email", :method => :post },
-      { :controller => "users", :action => "confirm_email" }
-    )
-
     assert_routing(
       { :path => "/user/go_public", :method => :post },
       { :controller => "users", :action => "go_public" }
@@ -171,7 +141,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     assert_match(/#{@url}/, register_email.body.to_s)
 
     # Check the page
-    assert_redirected_to :action => "confirm", :display_name => user.display_name
+    assert_redirected_to :controller => :confirmations, :action => :confirm, :display_name => user.display_name
 
     ActionMailer::Base.deliveries.clear
   end
@@ -363,308 +333,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     ActionMailer::Base.deliveries.clear
   end
 
-  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
-
-    get user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_response :success
-    assert_template :confirm
-  end
-
-  def test_confirm_get_already_confirmed
-    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
-
-    # Get the confirmation page
-    get user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_response :success
-    assert_template :confirm
-
-    # Confirm the user
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to welcome_path
-
-    # 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
-
-  def test_confirm_success_no_token_no_referer
-    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
-
-    post logout_path
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to login_path
-    assert_match(/Confirmed your account/, flash[:notice])
-  end
-
-  def test_confirm_success_good_token_no_referer
-    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
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to welcome_path
-  end
-
-  def test_confirm_success_bad_token_no_referer
-    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
-
-    post logout_path
-    session_for(create(:user))
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to login_path
-    assert_match(/Confirmed your account/, flash[:notice])
-  end
-
-  def test_confirm_success_no_token_with_referer
-    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
-
-    post logout_path
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to login_path(:referer => new_diary_entry_path)
-    assert_match(/Confirmed your account/, flash[:notice])
-  end
-
-  def test_confirm_success_good_token_with_referer
-    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
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to new_diary_entry_path
-  end
-
-  def test_confirm_success_bad_token_with_referer
-    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
-
-    post logout_path
-    session_for(create(:user))
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to login_path(:referer => new_diary_entry_path)
-    assert_match(/Confirmed your account/, flash[:notice])
-  end
-
-  def test_confirm_expired_token
-    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
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_redirected_to :action => "confirm"
-    assert_match(/confirmation code has expired/, flash[:error])
-  end
-
-  def test_confirm_already_confirmed
-    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
-
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    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 }
-    assert_redirected_to login_path
-    assert_match(/already been confirmed/, flash[:error])
-  end
-
-  def test_confirm_deleted
-    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
-
-    User.find_by(:display_name => user.display_name).update(:status => "deleted")
-
-    # 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
-    post user_confirm_path, :params => { :display_name => user.display_name, :confirm_string => confirm_string }
-    assert_response :not_found
-    assert_template :no_such_user
-  end
-
-  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)
-      end
-    end
-
-    assert_response :redirect
-    assert_redirected_to login_path
-    assert_match(/sent a new confirmation/, flash[:notice])
-
-    email = ActionMailer::Base.deliveries.last
-
-    assert_equal user.email, email.to.first
-
-    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")
-
-    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_unknown_user
-    assert_no_difference "ActionMailer::Base.deliveries.size" do
-      perform_enqueued_jobs do
-        get 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
-
-    get user_confirm_email_path, :params => { :confirm_string => confirm_string }
-    assert_response :success
-    assert_template :confirm_email
-  end
-
-  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
-
-    post user_confirm_email_path, :params => { :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])
-  end
-
-  def test_confirm_email_already_confirmed
-    user = create(:user)
-    confirm_string = user.tokens.create.token
-
-    post user_confirm_email_path, :params => { :confirm_string => confirm_string }
-    assert_response :redirect
-    assert_redirected_to :action => :account, :display_name => user.display_name
-    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_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
-    # 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
-    # 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 :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(user.id).image_use_gravatar
-  end
-
-  def test_gravatar_auto_disable
-    # 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
-    # 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 :action => :account, :display_name => user.display_name
-    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
-  end
-
   def test_terms_new_user
     user = build(:user, :pending)
 
@@ -795,80 +463,6 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
     assert_template :account
     assert_not_equal user.description, User.find(user.id).description
 
-    # Updating the description should work
-    user.description = "new description"
-    user.preferred_editor = "default"
-    post user_account_path(user), :params => { :user => user.attributes }
-    assert_response :redirect
-    assert_redirected_to user_account_url(user)
-    get user_account_path(user)
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", /^User information updated successfully/
-    assert_select "form#accountForm > div.form-group > div#user_description_container > div#user_description_content > textarea#user_description", user.description
-
-    # Changing to a invalid editor should fail
-    user.preferred_editor = "unknown"
-    post user_account_path(user), :params => { :user => user.attributes }
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", false
-    assert_select "form#accountForm > div.form-group > select#user_preferred_editor > option[selected]", false
-
-    # Changing to a valid editor should work
-    user.preferred_editor = "id"
-    post user_account_path(user), :params => { :user => user.attributes }
-    assert_response :redirect
-    assert_redirected_to user_account_url(user)
-    get user_account_path(user)
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", /^User information updated successfully/
-    assert_select "form#accountForm > div.form-group > select#user_preferred_editor > option[selected][value=?]", "id"
-
-    # Changing to the default editor should work
-    user.preferred_editor = "default"
-    post user_account_path(user), :params => { :user => user.attributes }
-    assert_response :redirect
-    assert_redirected_to user_account_url(user)
-    get user_account_path(user)
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", /^User information updated successfully/
-    assert_select "form#accountForm > div.form-group > select#user_preferred_editor > option[selected]", false
-
-    # Changing to an uploaded image should work
-    image = Rack::Test::UploadedFile.new("test/gpx/fixtures/a.gif", "image/gif")
-    post user_account_path(user), :params => { :avatar_action => "new", :user => user.attributes.merge(:avatar => image) }
-    assert_response :redirect
-    assert_redirected_to user_account_url(user)
-    get user_account_path(user)
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", /^User information updated successfully/
-    assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-check > input[name=avatar_action][checked][value=?]", "keep"
-
-    # Changing to a gravatar image should work
-    post user_account_path(user), :params => { :avatar_action => "gravatar", :user => user.attributes }
-    assert_response :redirect
-    assert_redirected_to user_account_url(user)
-    get user_account_path(user)
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", /^User information updated successfully/
-    assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-group > div.form-check > input[name=avatar_action][checked][value=?]", "gravatar"
-
-    # Removing the image should work
-    post user_account_path(user), :params => { :avatar_action => "delete", :user => user.attributes }
-    assert_response :redirect
-    assert_redirected_to user_account_url(user)
-    get user_account_path(user)
-    assert_response :success
-    assert_template :account
-    assert_select ".notice", /^User information updated successfully/
-    assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-check > input[name=avatar_action][checked]", false
-    assert_select "form#accountForm > fieldset.form-group > div.form-row > div.col-sm-10 > div.form-group > div.form-check > input[name=avatar_action][checked]", false
-
     # Adding external authentication should redirect to the auth provider
     post user_account_path(user), :params => { :user => user.attributes.merge(:auth_provider => "openid", :auth_uid => "gmail.com") }
     assert_response :redirect