</h1>
<p class='text-body-secondary'>
- <%= t ".resend_html",
- :reconfirm_link => link_to(t(".click_here"), url_for(:action => "confirm_resend")) %>
+ <%= t ".if_need_resend" %>
</p>
+ <%= bootstrap_form_tag :url => url_for(:action => "confirm_resend") do |f| %>
+ <%= f.submit t(".resend_button"), :class => "btn btn-outline-primary" %>
+ <% end %>
<% end %>
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:
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]
{ :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" }
)
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_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
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
+++ /dev/null
-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 "<p>"
- end
-end
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 "<p>"
+
+ 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