Skip to content

Commit bd6e1cc

Browse files
committed
Use broken-up password resets test
1 parent 9d62582 commit bd6e1cc

File tree

1 file changed

+62
-28
lines changed

1 file changed

+62
-28
lines changed
Lines changed: 62 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,97 @@
11
require "test_helper"
22

3-
class PasswordResetsTest < ActionDispatch::IntegrationTest
3+
class PasswordResets < ActionDispatch::IntegrationTest
44

55
def setup
66
ActionMailer::Base.deliveries.clear
77
@user = users(:michael)
88
end
9+
end
910

10-
test "password resets" do
11+
class PasswordResetsTest < PasswordResets
12+
13+
test "password reset path" do
1114
get new_password_reset_path
1215
assert_template 'password_resets/new'
1316
assert_select 'input[name=?]', 'password_reset[email]'
14-
# Invalid email
17+
end
18+
19+
test "reset path with invalid email" do
1520
post password_resets_path, params: { password_reset: { email: "" } }
1621
assert_not flash.empty?
1722
assert_template 'password_resets/new'
18-
# Valid email
23+
end
24+
end
25+
26+
class PasswordForm < PasswordResets
27+
28+
def setup
29+
super
1930
post password_resets_path,
2031
params: { password_reset: { email: @user.email } }
32+
@actual_user = assigns(:user)
33+
end
34+
end
35+
36+
class PasswordFormTest < PasswordForm
37+
38+
test "reset with valid email" do
2139
assert_not_equal @user.reset_digest, @user.reload.reset_digest
2240
assert_equal 1, ActionMailer::Base.deliveries.size
2341
assert_not flash.empty?
2442
assert_redirected_to root_url
25-
# Password reset form
26-
user = assigns(:user)
27-
# Wrong email
28-
get edit_password_reset_path(user.reset_token, email: "")
43+
end
44+
45+
test "reset with wrong email" do
46+
get edit_password_reset_path(@actual_user.reset_token, email: "")
2947
assert_redirected_to root_url
30-
# Inactive user
31-
user.toggle!(:activated)
32-
get edit_password_reset_path(user.reset_token, email: user.email)
48+
end
49+
50+
test "reset with inactive user" do
51+
@actual_user.toggle!(:activated)
52+
get edit_password_reset_path(@actual_user.reset_token,
53+
email: @actual_user.email)
3354
assert_redirected_to root_url
34-
user.toggle!(:activated)
35-
# Right email, wrong token
36-
get edit_password_reset_path('wrong token', email: user.email)
55+
end
56+
57+
test "reset with right email but wrong token" do
58+
get edit_password_reset_path('wrong token', email: @actual_user.email)
3759
assert_redirected_to root_url
38-
# Right email, right token
39-
get edit_password_reset_path(user.reset_token, email: user.email)
60+
end
61+
62+
test "reset with right email and right token" do
63+
get edit_password_reset_path(@actual_user.reset_token,
64+
email: @actual_user.email)
4065
assert_template 'password_resets/edit'
41-
assert_select "input[name=email][type=hidden][value=?]", user.email
42-
# Invalid password & confirmation
43-
patch password_reset_path(user.reset_token),
44-
params: { email: user.email,
66+
assert_select "input[name=email][type=hidden][value=?]", @actual_user.email
67+
end
68+
end
69+
70+
class PasswordUpdateTest < PasswordForm
71+
72+
test "update with invalid password and confirmation" do
73+
patch password_reset_path(@actual_user.reset_token),
74+
params: { email: @actual_user.email,
4575
user: { password: "foobaz",
4676
password_confirmation: "barquux" } }
4777
assert_select 'div#error_explanation'
48-
# Empty password
49-
patch password_reset_path(user.reset_token),
50-
params: { email: user.email,
78+
end
79+
80+
test "update with empty password" do
81+
patch password_reset_path(@actual_user.reset_token),
82+
params: { email: @actual_user.email,
5183
user: { password: "",
5284
password_confirmation: "" } }
5385
assert_select 'div#error_explanation'
54-
# Valid password & confirmation
55-
patch password_reset_path(user.reset_token),
56-
params: { email: user.email,
86+
end
87+
88+
test "update with valid password and confirmation" do
89+
patch password_reset_path(@actual_user.reset_token),
90+
params: { email: @actual_user.email,
5791
user: { password: "foobaz",
5892
password_confirmation: "foobaz" } }
5993
assert is_logged_in?
6094
assert_not flash.empty?
61-
assert_redirected_to user
95+
assert_redirected_to @actual_user
6296
end
63-
end
97+
end

0 commit comments

Comments
 (0)