2011-05-31 23:07:20 +02:00
|
|
|
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2007-03-30 04:36:52 +00:00
|
|
|
|
2009-06-02 21:22:50 +02:00
|
|
|
class UsersControllerTest < ActionController::TestCase
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_get_index_when_not_logged_in
|
|
|
|
|
get :index
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_redirected_to login_path
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_get_index_by_nonadmin
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :other_user
|
2007-03-30 04:36:52 +00:00
|
|
|
get :index
|
|
|
|
|
assert_response 401
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_get_index_by_admin
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :admin_user
|
2007-03-30 04:36:52 +00:00
|
|
|
get :index
|
|
|
|
|
assert_response :success
|
2011-09-09 17:49:42 +02:00
|
|
|
assert_equal "TRACKS::Manage Users", assigns['page_title']
|
2011-09-05 09:48:50 +02:00
|
|
|
assert_equal 5, assigns['total_users']
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_equal users_url, session['return-to']
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2008-07-14 13:10:55 -04:00
|
|
|
|
|
|
|
|
def test_index_pagination_page_1
|
|
|
|
|
User.per_page = 1
|
|
|
|
|
login_as :admin_user
|
|
|
|
|
get :index
|
2013-02-27 11:50:49 +01:00
|
|
|
assert_equal assigns['users'],[User.where(:login => 'admin').first]
|
2008-07-14 13:10:55 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_index_pagination_page_2
|
|
|
|
|
User.per_page = 1
|
|
|
|
|
login_as :admin_user
|
|
|
|
|
get :index, :page => 2
|
2013-02-27 11:50:49 +01:00
|
|
|
assert_equal assigns['users'],[User.where(:login => 'jane').first]
|
2008-07-14 13:10:55 -04:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_destroy_user
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :admin_user
|
2007-03-30 04:36:52 +00:00
|
|
|
@no_users_before = User.find(:all).size
|
2010-04-09 09:34:57 -04:00
|
|
|
user_id = users(:ldap_user).id
|
|
|
|
|
xhr :post, :destroy, :id => user_id.to_param
|
2007-03-30 04:36:52 +00:00
|
|
|
assert_equal @no_users_before-1, User.find(:all).size
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_update_password_successful
|
2012-06-27 21:40:12 +02:00
|
|
|
get :change_password, :id => users(:admin_user).id
|
|
|
|
|
# should fail because no login
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_redirected_to login_path
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :admin_user
|
2007-03-30 04:36:52 +00:00
|
|
|
@user = @request.session['user_id']
|
2012-06-27 21:40:12 +02:00
|
|
|
get :change_password, :id => users(:admin_user).id # should now pass because we're logged in
|
2007-03-30 04:36:52 +00:00
|
|
|
assert_response :success
|
2011-09-09 17:49:42 +02:00
|
|
|
assert_equal assigns['page_title'], "TRACKS::Change password"
|
2012-06-27 21:40:12 +02:00
|
|
|
post :update_password, :id => users(:admin_user).id, :user => {:password => 'newpassword', :password_confirmation => 'newpassword'}
|
2007-07-17 04:47:35 +00:00
|
|
|
assert_redirected_to preferences_path
|
2007-03-30 04:36:52 +00:00
|
|
|
@updated_user = User.find(users(:admin_user).id)
|
2011-07-23 10:52:38 +02:00
|
|
|
assert_not_nil User.authenticate(@updated_user.login, 'newpassword')
|
2007-03-30 04:36:52 +00:00
|
|
|
assert_equal "Password updated.", flash[:notice]
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_update_password_no_confirmation
|
2012-06-27 21:40:12 +02:00
|
|
|
post :update_password, :id => users(:admin_user).id, :user => {:password => 'newpassword', :password_confirmation => 'wrong'}
|
|
|
|
|
# should fail because no login
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_redirected_to login_path
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :admin_user
|
2012-06-27 21:40:12 +02:00
|
|
|
post :update_password, :id => users(:admin_user).id, :user => {:password => 'newpassword', :password_confirmation => 'wrong'}
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_redirected_to change_password_user_path(users(:admin_user))
|
2007-03-30 04:36:52 +00:00
|
|
|
assert_equal 'Validation failed: Password doesn\'t match confirmation', flash[:error]
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_update_password_validation_errors
|
2012-06-27 21:40:12 +02:00
|
|
|
post :update_password, :id => users(:admin_user).id
|
|
|
|
|
# should fail because no login
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_redirected_to login_path
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :admin_user
|
2012-06-27 21:40:12 +02:00
|
|
|
post :update_password, :id => users(:admin_user).id, :user => {:password => 'ba', :password_confirmation => 'ba'}
|
2012-04-24 20:47:07 +02:00
|
|
|
assert_redirected_to change_password_user_path(User.find(users(:admin_user).id))
|
2007-03-30 04:36:52 +00:00
|
|
|
# For some reason, no errors are being raised now.
|
|
|
|
|
#assert_equal 1, users(:admin_user).errors.count
|
|
|
|
|
#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
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
# ============================================
|
|
|
|
|
# Signup and creation of new users
|
|
|
|
|
# ============================================
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2013-03-03 13:55:11 -06:00
|
|
|
def test_with_no_users
|
|
|
|
|
User.expects(:no_users_yet?).returns(true)
|
|
|
|
|
get :new
|
|
|
|
|
assert_match assigns['heading'], /get started/
|
|
|
|
|
assert_not_nil assigns[:user]
|
|
|
|
|
end
|
|
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_adds_a_new_nonadmin_user
|
|
|
|
|
login_as :admin_user
|
|
|
|
|
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
2013-02-27 11:50:49 +01:00
|
|
|
newbie = User.where(:login => 'newbie').first
|
2007-03-30 04:36:52 +00:00
|
|
|
assert_equal newbie.login, "newbie"
|
|
|
|
|
assert newbie.is_admin == false || newbie.is_admin == 0
|
|
|
|
|
assert_not_nil newbie.preference # have user preferences been created?
|
|
|
|
|
assert_not_nil User.authenticate('newbie', 'newbiepass')
|
2007-10-09 05:17:28 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_redirects_to_home_page
|
|
|
|
|
login_as :admin_user
|
|
|
|
|
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
2012-04-20 14:38:00 +02:00
|
|
|
assert_redirected_to root_url
|
2007-10-09 05:17:28 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
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
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_adds_a_user
|
|
|
|
|
login_as :admin_user
|
2009-12-07 18:41:23 -05:00
|
|
|
assert_difference 'User.count' do
|
2007-10-09 05:17:28 +00:00
|
|
|
post :create, :user => {:login => 'newbie', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
|
|
|
|
end
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
# Test whether signup of new users is denied to a non-admin user
|
2011-09-09 17:49:42 +02:00
|
|
|
#
|
2007-03-30 04:36:52 +00:00
|
|
|
def test_create_by_non_admin
|
2007-10-09 05:17:28 +00:00
|
|
|
login_as :other_user
|
2009-12-07 18:41:23 -05:00
|
|
|
assert_no_difference 'User.count' do
|
2007-10-09 05:17:28 +00:00
|
|
|
post :create, :user => {:login => 'newbie2', :password => 'newbiepass2', :password_confirmation => 'newbiepass2'}
|
|
|
|
|
end
|
2007-03-30 04:36:52 +00:00
|
|
|
assert_response :success
|
|
|
|
|
assert_template 'users/nosignup'
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
# ============================================
|
|
|
|
|
# Test validations
|
|
|
|
|
# ============================================
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_with_invalid_password_does_not_add_a_new_user
|
|
|
|
|
login_as :admin_user
|
2009-12-07 18:41:23 -05:00
|
|
|
assert_no_difference 'User.count' do
|
2007-10-09 05:17:28 +00:00
|
|
|
post :create, :user => {:login => 'newbie', :password => '', :password_confirmation => ''}
|
|
|
|
|
end
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_with_invalid_password_redirects_to_new_user_page
|
|
|
|
|
login_as :admin_user
|
2007-03-30 04:36:52 +00:00
|
|
|
post :create, :user => {:login => 'newbie', :password => '', :password_confirmation => ''}
|
2010-05-13 18:24:26 +02:00
|
|
|
assert_redirected_to signup_path
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_with_invalid_login_does_not_add_a_new_user
|
|
|
|
|
login_as :admin_user
|
2007-03-30 04:36:52 +00:00
|
|
|
post :create, :user => {:login => 'n', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
2010-05-13 18:24:26 +02:00
|
|
|
assert_redirected_to signup_path
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
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'}
|
2010-05-13 18:24:26 +02:00
|
|
|
assert_redirected_to signup_path
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
def test_create_with_duplicate_login_does_not_add_a_new_user
|
|
|
|
|
login_as :admin_user
|
2009-12-07 18:41:23 -05:00
|
|
|
assert_no_difference 'User.count' do
|
2007-10-09 05:17:28 +00:00
|
|
|
post :create, :user => {:login => 'jane', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
|
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-10-09 05:17:28 +00:00
|
|
|
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'}
|
2010-05-13 18:24:26 +02:00
|
|
|
assert_redirected_to signup_path
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|
2011-09-09 17:49:42 +02:00
|
|
|
|
2007-03-30 04:36:52 +00:00
|
|
|
end
|