mirror of
https://github.com/TracksApp/tracks.git
synced 2026-03-11 15:12:37 +01:00
Fixed bugs introduced in [190] which broke signup and change password (#213).
Also fixed user functional and unit tests to include new functionality. git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@191 a4c988fc-2ded-0310-b66e-134b36920a42
This commit is contained in:
parent
74224084e6
commit
e2487c412b
7 changed files with 298 additions and 51 deletions
|
|
@ -10,55 +10,141 @@ class LoginControllerTest < Test::Unit::TestCase
|
|||
|
||||
def setup
|
||||
assert_equal "test", ENV['RAILS_ENV']
|
||||
assert_equal "change-me", SALT
|
||||
@controller = LoginController.new
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
def test_login_with_invalid_user
|
||||
post :login, {:user_login => 'cracker', :user_password => 'secret'}
|
||||
# ============================================
|
||||
# Login and logout
|
||||
# ============================================
|
||||
|
||||
def test_invalid_login
|
||||
post :login, {:user_login => 'cracker', :user_password => 'secret', :user_noexpiry => 'on'}
|
||||
assert_response :success
|
||||
assert_template 'login/login'
|
||||
assert_nil(session['user'])
|
||||
|
||||
assert_session_has_no :user
|
||||
assert_template "login"
|
||||
end
|
||||
|
||||
def test_login_with_valid_admin_user
|
||||
user = login('admin','abracadabra')
|
||||
assert_equal "Login successful: session will expire after 1 hour of inactivity.", flash['notice']
|
||||
assert_redirected_to :controller => 'todo', :action => 'list'
|
||||
assert_equal 'admin', user.login
|
||||
assert_equal 1, user.is_admin
|
||||
@request.session['return-to'] = "/bogus/location"
|
||||
user = login('admin', 'abracadabra', 'on')
|
||||
assert_equal user, @response.session['user']
|
||||
assert_equal user.login, "admin"
|
||||
assert_equal user.is_admin, true
|
||||
assert_equal "Login successful: session will not expire.", flash['notice']
|
||||
assert_redirect_url "http://#{@request.host}/bogus/location"
|
||||
end
|
||||
|
||||
|
||||
def test_login_with_valid_standard_user
|
||||
user = login('jane','sesame')
|
||||
user = login('jane','sesame', 'off')
|
||||
assert_equal user, @response.session['user']
|
||||
assert_equal user.login, "jane"
|
||||
assert_equal user.is_admin, false
|
||||
assert_equal "Login successful: session will expire after 1 hour of inactivity.", flash['notice']
|
||||
assert_redirected_to :controller => 'todo', :action => 'list'
|
||||
assert_equal 'jane', user.login
|
||||
assert_equal 0, user.is_admin
|
||||
end
|
||||
|
||||
def test_logout
|
||||
user = login('admin','abracadabra')
|
||||
user = login('admin','abracadabra', 'on')
|
||||
get :logout
|
||||
assert_nil(session['user'])
|
||||
assert_redirected_to :controller => 'login', :action => 'login'
|
||||
end
|
||||
|
||||
# TODO: Not sure how to test whether the user is blocked if the admin user is
|
||||
# not logged in. I tried setting the session[:user] cookie to nil first,
|
||||
# but that generated an error.
|
||||
# Test login with a bad password for existing user
|
||||
#
|
||||
def test_login_bad_password
|
||||
post :login, {:user_login => 'jane', :user_password => 'wrong', :user_noexpiry => 'on'}
|
||||
assert_session_has_no :user
|
||||
assert_equal "Login unsuccessful", flash['warning']
|
||||
assert_success
|
||||
end
|
||||
|
||||
def test_login_bad_login
|
||||
post :login, {:user_login => 'blah', :user_password => 'sesame', :user_noexpiry => 'on'}
|
||||
assert_session_has_no :user
|
||||
assert_equal "Login unsuccessful", flash['warning']
|
||||
assert_success
|
||||
end
|
||||
|
||||
# ============================================
|
||||
# Signup and creation of new users
|
||||
# ============================================
|
||||
|
||||
# Test signup of a new user by admin
|
||||
# Check that newly created user can log in
|
||||
#
|
||||
def test_create
|
||||
post :signup, :user => {:login => 'newbie',
|
||||
:password => 'newbiepass',
|
||||
:password_confirmation => 'newbiepass'}
|
||||
assert_equal "Signup successful", flash['notice']
|
||||
admin = login('admin', 'abracadabra', 'on')
|
||||
assert_equal admin.is_admin, true
|
||||
assert_equal admin, @response.session['user']
|
||||
newbie = create('newbie', 'newbiepass')
|
||||
assert_equal "Signup successful for user newbie.", flash['notice']
|
||||
assert_redirected_to :controller => 'todo', :action => 'list'
|
||||
assert_valid newbie
|
||||
get :logout # logout the admin user
|
||||
assert_equal newbie.login, "newbie"
|
||||
assert_equal newbie.is_admin, false
|
||||
assert_not_nil newbie.preferences # have user preferences been created?
|
||||
user = login('newbie', 'newbiepass', 'on') # log in the new user
|
||||
assert_redirected_to :controller => 'todo', :action => 'list'
|
||||
assert_not_nil(session['user'])
|
||||
user = User.find(session['user'].id)
|
||||
assert_equal 'newbie', user.login
|
||||
assert_equal 0, user.is_admin
|
||||
assert_equal user.is_admin, false
|
||||
num_users = User.find(:all)
|
||||
assert_equal num_users.length, 3
|
||||
end
|
||||
|
||||
# Test whether signup of new users is denied to a non-admin user
|
||||
#
|
||||
def test_create_by_non_admin
|
||||
non_admin = login('jane', 'sesame', 'on')
|
||||
assert_equal non_admin.is_admin, false
|
||||
assert_equal non_admin, @response.session['user']
|
||||
post :signup, :user => {:login => 'newbie2', :password => 'newbiepass2', :password_confirmation => 'newbiepass2'}
|
||||
assert_template 'login/nosignup'
|
||||
|
||||
num_users = User.find(:all)
|
||||
assert_equal num_users.length, 2
|
||||
end
|
||||
|
||||
# ============================================
|
||||
# Test validations
|
||||
# ============================================
|
||||
|
||||
def test_create_with_invalid_password
|
||||
admin = login('admin', 'abracadabra', 'on')
|
||||
assert_equal admin.is_admin, true
|
||||
assert_equal admin, @response.session['user']
|
||||
post :create, :user => {:login => 'newbie', :password => '', :password_confirmation => ''}
|
||||
num_users = User.find(:all)
|
||||
assert_equal num_users.length, 2
|
||||
assert_redirected_to :controller => 'login', :action => 'signup'
|
||||
end
|
||||
|
||||
def test_create_with_invalid_user
|
||||
admin = login('admin', 'abracadabra', 'on')
|
||||
assert_equal admin.is_admin, true
|
||||
assert_equal admin, @response.session['user']
|
||||
post :create, :user => {:login => 'n', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
num_users = User.find(:all)
|
||||
assert_equal num_users.length, 2
|
||||
assert_redirected_to :controller => 'login', :action => 'signup'
|
||||
end
|
||||
|
||||
# Test uniqueness of login
|
||||
#
|
||||
def test_validate_uniqueness_of_login
|
||||
admin = login('admin', 'abracadabra', 'on')
|
||||
assert_equal admin.is_admin, true
|
||||
assert_equal admin, @response.session['user']
|
||||
post :create, :user => {:login => 'jane', :password => 'newbiepass', :password_confirmation => 'newbiepass'}
|
||||
num_users = User.find(:all)
|
||||
assert_equal num_users.length, 2
|
||||
assert_redirected_to :controller => 'login', :action => 'signup'
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue