mirror of
https://github.com/TracksApp/tracks.git
synced 2026-01-04 16:28:50 +01:00
Fix updating password
Signed-off-by: Reinier Balt <lrbalt@gmail.com>
This commit is contained in:
parent
50875cfa40
commit
998c14fa71
7 changed files with 83 additions and 74 deletions
|
|
@ -6,7 +6,7 @@ class UsersController; def rescue_action(e) raise e end; end
|
|||
|
||||
class UsersControllerTest < ActionController::TestCase
|
||||
fixtures :preferences, :users
|
||||
|
||||
|
||||
def setup
|
||||
assert_equal "test", ENV['RAILS_ENV']
|
||||
assert_equal "change-me", Tracks::Config.salt
|
||||
|
|
@ -14,23 +14,23 @@ class UsersControllerTest < ActionController::TestCase
|
|||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
|
||||
def test_get_index_when_not_logged_in
|
||||
get :index
|
||||
assert_redirected_to :controller => 'login', :action => 'login'
|
||||
end
|
||||
|
||||
|
||||
def test_get_index_by_nonadmin
|
||||
login_as :other_user
|
||||
get :index
|
||||
assert_response 401
|
||||
end
|
||||
|
||||
|
||||
def test_get_index_by_admin
|
||||
login_as :admin_user
|
||||
get :index
|
||||
assert_response :success
|
||||
assert_equal "TRACKS::Manage Users", assigns['page_title']
|
||||
assert_equal "TRACKS::Manage Users", assigns['page_title']
|
||||
assert_equal 5, assigns['total_users']
|
||||
assert_equal "/users", session['return-to']
|
||||
end
|
||||
|
|
@ -48,7 +48,7 @@ class UsersControllerTest < ActionController::TestCase
|
|||
get :index, :page => 2
|
||||
assert_equal assigns['users'],[User.find_by_login('jane')]
|
||||
end
|
||||
|
||||
|
||||
def test_destroy_user
|
||||
login_as :admin_user
|
||||
@no_users_before = User.find(:all).size
|
||||
|
|
@ -56,7 +56,7 @@ class UsersControllerTest < ActionController::TestCase
|
|||
xhr :post, :destroy, :id => user_id.to_param
|
||||
assert_equal @no_users_before-1, User.find(:all).size
|
||||
end
|
||||
|
||||
|
||||
def test_update_password_successful
|
||||
get :change_password # should fail because no login
|
||||
assert_redirected_to :controller => 'login', :action => 'login'
|
||||
|
|
@ -64,29 +64,29 @@ class UsersControllerTest < ActionController::TestCase
|
|||
@user = @request.session['user_id']
|
||||
get :change_password # should now pass because we're logged in
|
||||
assert_response :success
|
||||
assert_equal assigns['page_title'], "TRACKS::Change password"
|
||||
post :update_password, :updateuser => {:password => 'newpassword', :password_confirmation => 'newpassword'}
|
||||
assert_equal assigns['page_title'], "TRACKS::Change password"
|
||||
post :update_password, :user => {:password => 'newpassword', :password_confirmation => 'newpassword'}
|
||||
assert_redirected_to preferences_path
|
||||
@updated_user = User.find(users(:admin_user).id)
|
||||
assert_not_nil User.authenticate(@updated_user.login, 'newpassword')
|
||||
assert_equal "Password updated.", flash[:notice]
|
||||
end
|
||||
|
||||
|
||||
def test_update_password_no_confirmation
|
||||
post :update_password # should fail because no login
|
||||
assert_redirected_to :controller => 'login', :action => 'login'
|
||||
login_as :admin_user
|
||||
post :update_password, :updateuser => {:password => 'newpassword', :password_confirmation => 'wrong'}
|
||||
post :update_password, :user => {:password => 'newpassword', :password_confirmation => 'wrong'}
|
||||
assert_redirected_to :controller => 'users', :action => 'change_password'
|
||||
assert users(:admin_user).save, false
|
||||
assert_equal 'Validation failed: Password doesn\'t match confirmation', flash[:error]
|
||||
end
|
||||
|
||||
|
||||
def test_update_password_validation_errors
|
||||
post :update_password # should fail because no login
|
||||
assert_redirected_to :controller => 'login', :action => 'login'
|
||||
login_as :admin_user
|
||||
post :update_password, :updateuser => {:password => 'ba', :password_confirmation => 'ba'}
|
||||
post :update_password, :user => {:password => 'ba', :password_confirmation => 'ba'}
|
||||
assert_redirected_to :controller => 'users', :action => 'change_password'
|
||||
assert users(:admin_user).save, false
|
||||
# For some reason, no errors are being raised now.
|
||||
|
|
@ -94,11 +94,11 @@ class UsersControllerTest < ActionController::TestCase
|
|||
#assert_equal users(:admin_user).errors.on(:password), "is too short (min is 5 characters)"
|
||||
assert_equal 'Validation failed: Password is too short (minimum is 5 characters)', flash[:error]
|
||||
end
|
||||
|
||||
|
||||
# ============================================
|
||||
# Signup and creation of new users
|
||||
# ============================================
|
||||
|
||||
|
||||
def test_create_adds_a_new_nonadmin_user
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
|
|
@ -108,28 +108,28 @@ class UsersControllerTest < ActionController::TestCase
|
|||
assert_not_nil newbie.preference # have user preferences been created?
|
||||
assert_not_nil User.authenticate('newbie', 'newbiepass')
|
||||
end
|
||||
|
||||
|
||||
def test_create_redirects_to_home_page
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
assert_redirected_to home_url
|
||||
end
|
||||
|
||||
|
||||
def test_create_sets_flash_message
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
assert_equal "Signup successful for user newbie.", flash[:notice], "expected flash notice not found"
|
||||
end
|
||||
|
||||
|
||||
def test_create_adds_a_user
|
||||
login_as :admin_user
|
||||
assert_difference 'User.count' do
|
||||
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Test whether signup of new users is denied to a non-admin user
|
||||
#
|
||||
#
|
||||
def test_create_by_non_admin
|
||||
login_as :other_user
|
||||
assert_no_difference 'User.count' do
|
||||
|
|
@ -138,47 +138,47 @@ class UsersControllerTest < ActionController::TestCase
|
|||
assert_response :success
|
||||
assert_template 'users/nosignup'
|
||||
end
|
||||
|
||||
|
||||
# ============================================
|
||||
# Test validations
|
||||
# ============================================
|
||||
|
||||
|
||||
def test_create_with_invalid_password_does_not_add_a_new_user
|
||||
login_as :admin_user
|
||||
assert_no_difference 'User.count' do
|
||||
post :create, :user => {:login => 'newbie', :password => '', :password_confirmation => ''}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_create_with_invalid_password_redirects_to_new_user_page
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'newbie', :password => '', :password_confirmation => ''}
|
||||
assert_redirected_to signup_path
|
||||
end
|
||||
|
||||
|
||||
def test_create_with_invalid_login_does_not_add_a_new_user
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'n', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
assert_redirected_to signup_path
|
||||
end
|
||||
|
||||
|
||||
def test_create_with_invalid_login_redirects_to_new_user_page
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'n', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
assert_redirected_to signup_path
|
||||
end
|
||||
|
||||
|
||||
def test_create_with_duplicate_login_does_not_add_a_new_user
|
||||
login_as :admin_user
|
||||
assert_no_difference 'User.count' do
|
||||
post :create, :user => {:login => 'jane', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_create_with_duplicate_login_redirects_to_new_user_page
|
||||
login_as :admin_user
|
||||
post :create, :user => {:login => 'jane', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
assert_redirected_to signup_path
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue