From: Anton Khorev Date: Sun, 29 Dec 2024 03:10:07 +0000 (+0300) Subject: Replace resent confirmation link with button X-Git-Tag: live~269^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/fcfb7d4af1e721a59b25aabd2aa0d707657cc80c Replace resent confirmation link with button --- diff --git a/app/views/confirmations/confirm.html.erb b/app/views/confirmations/confirm.html.erb index 4f98a8539..08dea27b6 100644 --- a/app/views/confirmations/confirm.html.erb +++ b/app/views/confirmations/confirm.html.erb @@ -28,7 +28,9 @@

- <%= t ".resend_html", - :reconfirm_link => link_to(t(".click_here"), url_for(:action => "confirm_resend")) %> + <%= t ".if_need_resend" %>

+ <%= bootstrap_form_tag :url => url_for(:action => "confirm_resend") do |f| %> + <%= f.submit t(".resend_button"), :class => "btn btn-outline-primary" %> + <% end %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 7faf3bebc..417267808 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1726,8 +1726,8 @@ en: success: "Confirmed your account, thanks for signing up!" already active: "This account has already been confirmed." unknown token: "That confirmation code has expired or does not exist." - resend_html: "If you need us to resend the confirmation email, %{reconfirm_link}." - click_here: click here + if_need_resend: "If you need us to resend the confirmation email, click the button below." + resend_button: Resend the confirmation email confirm_resend: failure: "User %{name} not found." confirm_email: diff --git a/config/routes.rb b/config/routes.rb index 0e00da9e3..068f3915e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -186,7 +186,7 @@ OpenStreetMap::Application.routes.draw do post "/user/new" => "users#create" get "/user/terms" => "users#terms" post "/user/save" => "users#save" - get "/user/:display_name/confirm/resend" => "confirmations#confirm_resend", :as => :user_confirm_resend + post "/user/:display_name/confirm/resend" => "confirmations#confirm_resend", :as => :user_confirm_resend match "/user/:display_name/confirm" => "confirmations#confirm", :via => [:get, :post] match "/user/confirm" => "confirmations#confirm", :via => [:get, :post] match "/user/confirm-email" => "confirmations#confirm_email", :via => [:get, :post] diff --git a/test/controllers/confirmations_controller_test.rb b/test/controllers/confirmations_controller_test.rb index 79213441f..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" } ) @@ -193,7 +193,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest 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 @@ -216,7 +216,7 @@ class UsersControllerTest < ActionDispatch::IntegrationTest 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 @@ -227,7 +227,7 @@ 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 diff --git a/test/system/confirmation_resend_test.rb b/test/system/confirmation_resend_test.rb deleted file mode 100644 index 6ef85818a..000000000 --- a/test/system/confirmation_resend_test.rb +++ /dev/null @@ -1,23 +0,0 @@ -require "application_system_test_case" - -class ConfirmationResendSystemTest < ApplicationSystemTestCase - def setup - @user = build(:user) - visit user_new_path - - within ".new_user" do - fill_in "Email", :with => @user.email - fill_in "Display Name", :with => @user.display_name - fill_in "Password", :with => "testtest" - fill_in "Confirm Password", :with => "testtest" - click_on "Sign Up" - end - end - - test "flash message should not contain raw html" do - visit user_confirm_resend_path(@user) - - assert_content "sent a new confirmation" - assert_no_content "

" - end -end diff --git a/test/system/user_signup_test.rb b/test/system/user_signup_test.rb index ebd91340a..2fb90fc3a 100644 --- a/test/system/user_signup_test.rb +++ b/test/system/user_signup_test.rb @@ -38,6 +38,44 @@ class UserSignupTest < ApplicationSystemTestCase assert_content "Welcome!" end + test "Sign up with confirmation email resending" do + visit root_path + + click_on "Sign Up" + + within_content_body do + fill_in "Email", :with => "new_user_account@example.com" + fill_in "Display Name", :with => "new_user_account" + fill_in "Password", :with => "new_user_password" + fill_in "Confirm Password", :with => "new_user_password" + + assert_emails 2 do + click_on "Sign Up" + + assert_content "We sent you a confirmation email" + + click_on "Resend the confirmation email" + + assert_content "Email Address or Username" + end + end + + assert_content "sent a new confirmation" + assert_no_content "

" + + email = ActionMailer::Base.deliveries.last + assert_equal 1, email.to.count + assert_equal "new_user_account@example.com", email.to.first + email_text = email.parts[0].parts[0].decoded + match = %r{/user/new_user_account/confirm\?confirm_string=\S+}.match(email_text) + assert_not_nil match + + visit match[0] + + assert_content "new_user_account" + assert_content "Welcome!" + end + test "Sign up from login page" do visit login_path