1
0
Fork 0
mirror of https://github.com/heartcombo/devise.git synced 2022-11-09 12:18:31 -05:00
heartcombo--devise/test/integration/recoverable_test.rb

107 lines
3.3 KiB
Ruby
Raw Normal View History

2009-10-12 07:37:42 -04:00
require 'test/test_helper'
class PasswordTest < ActionController::IntegrationTest
2009-10-12 07:37:42 -04:00
def visit_new_password_path
2009-10-12 08:56:12 -04:00
visit new_user_session_path
2009-10-12 07:37:42 -04:00
click_link 'Forgot password?'
end
def request_forgot_password(&block)
visit_new_password_path
assert_response :success
assert_template 'passwords/new'
2009-10-12 08:56:12 -04:00
assert_not warden.authenticated?(:user)
2009-10-12 07:37:42 -04:00
2009-10-12 08:56:12 -04:00
fill_in 'email', :with => 'user@test.com'
2009-10-12 07:37:42 -04:00
yield if block_given?
click_button 'Send me reset password instructions'
end
def reset_password(options={}, &block)
visit edit_user_password_path(:reset_password_token => options[:reset_password_token])
2009-10-12 07:37:42 -04:00
assert_response :success
assert_template 'passwords/edit'
fill_in 'Password', :with => '987654321'
fill_in 'Password confirmation', :with => '987654321'
yield if block_given?
click_button 'Change my password'
end
2009-10-12 08:56:12 -04:00
test 'authenticated user should not be able to visit forgot password page' do
sign_in_as_user
assert warden.authenticated?(:user)
2009-10-12 07:37:42 -04:00
2009-10-12 08:56:12 -04:00
get new_user_password_path
2009-10-12 07:37:42 -04:00
assert_response :redirect
assert_redirected_to root_path
end
2009-10-12 08:56:12 -04:00
test 'not authenticated user should be able to request a forgot password' do
create_user
2009-10-12 07:37:42 -04:00
request_forgot_password
assert_template 'sessions/new'
assert_contain 'You will receive an email with instructions about how to reset your password in a few minutes.'
end
2009-10-12 08:56:12 -04:00
test 'not authenticated user with invalid email should receive an error message' do
2009-10-12 07:37:42 -04:00
request_forgot_password do
fill_in 'email', :with => 'invalid.test@test.com'
end
assert_response :success
assert_template 'passwords/new'
assert_have_selector 'input[type=text][value=\'invalid.test@test.com\']'
assert_contain 'Email not found'
end
2009-10-12 08:56:12 -04:00
test 'authenticated user should not be able to visit edit password page' do
sign_in_as_user
2009-10-12 07:37:42 -04:00
2009-10-12 08:56:12 -04:00
get edit_user_password_path
2009-10-12 07:37:42 -04:00
assert_response :redirect
assert_redirected_to root_path
2009-10-12 08:56:12 -04:00
assert warden.authenticated?(:user)
2009-10-12 07:37:42 -04:00
end
test 'not authenticated user with invalid reset password token should not be able to change his password' do
2009-10-12 08:56:12 -04:00
user = create_user
reset_password :reset_password_token => 'invalid_reset_password'
2009-10-12 07:37:42 -04:00
assert_response :success
assert_template 'passwords/edit'
assert_have_selector '#errorExplanation'
assert_contain 'Reset password token is invalid'
2009-10-12 08:56:12 -04:00
assert_not user.reload.valid_password?('987654321')
2009-10-12 07:37:42 -04:00
end
test 'not authenticated user with valid reset password token but invalid password should not be able to change his password' do
2009-10-12 08:56:12 -04:00
user = create_user
request_forgot_password
reset_password :reset_password_token => user.reload.reset_password_token do
2009-10-12 07:37:42 -04:00
fill_in 'Password confirmation', :with => 'other_password'
end
assert_response :success
assert_template 'passwords/edit'
assert_have_selector '#errorExplanation'
assert_contain 'Password doesn\'t match confirmation'
2009-10-12 08:56:12 -04:00
assert_not user.reload.valid_password?('987654321')
2009-10-12 07:37:42 -04:00
end
2009-10-12 08:56:12 -04:00
test 'not authenticated user with valid data should be able to change his password' do
user = create_user
request_forgot_password
reset_password :reset_password_token => user.reload.reset_password_token
2009-10-12 07:37:42 -04:00
assert_template 'sessions/new'
assert_contain 'Your password was changed successfully.'
2009-10-12 08:56:12 -04:00
assert user.reload.valid_password?('987654321')
2009-10-12 07:37:42 -04:00
end
end