2011-05-31 23:07:20 +02:00
|
|
|
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2009-06-02 21:22:50 +02:00
|
|
|
|
|
|
|
|
class LoginControllerTest < ActionController::TestCase
|
|
|
|
|
fixtures :preferences, :users
|
|
|
|
|
|
|
|
|
|
def setup
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#============================================
|
|
|
|
|
#Login and logout
|
|
|
|
|
#============================================
|
|
|
|
|
|
|
|
|
|
def test_invalid_login
|
|
|
|
|
post :login, {:user_login => 'cracker', :user_password => 'secret', :user_noexpiry => 'on'}
|
|
|
|
|
assert_response :success
|
2012-04-20 14:38:00 +02:00
|
|
|
assert(!session[:user_id])
|
2009-06-02 21:22:50 +02:00
|
|
|
assert_template "login"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_login_with_valid_admin_user
|
|
|
|
|
@request.session['return-to'] = "/bogus/location"
|
|
|
|
|
post :login, {:user_login => 'admin', :user_password => 'abracadabra', :user_noexpiry => 'on'}
|
2012-04-20 14:38:00 +02:00
|
|
|
user = User.find_by_id(session['user_id'])
|
|
|
|
|
assert_not_nil user
|
|
|
|
|
assert_equal user.id, session['user_id']
|
2009-06-02 21:22:50 +02:00
|
|
|
assert_equal user.login, "admin"
|
|
|
|
|
assert user.is_admin
|
|
|
|
|
assert_equal "Login successful: session will not expire.", flash[:notice]
|
|
|
|
|
assert_equal("http://#{@request.host}/bogus/location", @response.redirect_url)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_login_with_valid_standard_user
|
|
|
|
|
post :login, {:user_login => 'jane', :user_password => 'sesame', :user_noexpiry => 'off'}
|
2012-04-20 14:38:00 +02:00
|
|
|
user = User.find_by_id(session['user_id'])
|
|
|
|
|
assert_not_nil user
|
|
|
|
|
assert_equal user.id, session['user_id']
|
2009-06-02 21:22:50 +02:00
|
|
|
assert_equal user.login, "jane"
|
|
|
|
|
assert user.is_admin == false || user.is_admin == 0
|
|
|
|
|
assert_equal "Login successful: session will expire after 1 hour of inactivity.", flash[:notice]
|
2012-04-20 14:38:00 +02:00
|
|
|
assert_redirected_to root_url
|
2009-06-02 21:22:50 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_login_with_no_users_redirects_to_signup
|
|
|
|
|
User.delete_all
|
|
|
|
|
get :login
|
2010-05-13 18:24:26 +02:00
|
|
|
assert_redirected_to signup_url
|
2009-06-02 21:22:50 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_logout
|
|
|
|
|
login_as :admin_user
|
|
|
|
|
get :logout
|
|
|
|
|
assert_nil(session['user_id'])
|
2012-04-20 14:38:00 +02:00
|
|
|
assert_redirected_to login_url
|
2009-06-02 21:22:50 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Test login with a bad password for existing user
|
2012-04-20 14:38:00 +02:00
|
|
|
#
|
2009-06-02 21:22:50 +02:00
|
|
|
def test_login_bad_password
|
|
|
|
|
post :login, {:user_login => 'jane', :user_password => 'wrong', :user_noexpiry => 'on'}
|
2012-04-20 14:38:00 +02:00
|
|
|
assert(!session[:user])
|
2010-11-09 10:47:09 +01:00
|
|
|
assert_equal "Login unsuccessful.", flash[:warning]
|
2009-06-02 21:22:50 +02:00
|
|
|
assert_response :success
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_login_bad_login
|
|
|
|
|
post :login, {:user_login => 'blah', :user_password => 'sesame', :user_noexpiry => 'on'}
|
2012-04-20 14:38:00 +02:00
|
|
|
assert(!session[:user])
|
2010-11-09 10:47:09 +01:00
|
|
|
assert_equal "Login unsuccessful.", flash[:warning]
|
2009-06-02 21:22:50 +02:00
|
|
|
assert_response :success
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_should_remember_me
|
|
|
|
|
post :login, :user_login => 'jane', :user_password => 'sesame', :user_noexpiry => "on"
|
|
|
|
|
assert_not_nil @response.cookies["auth_token"]
|
|
|
|
|
end
|
2012-04-20 14:38:00 +02:00
|
|
|
|
2009-06-02 21:22:50 +02:00
|
|
|
def test_should_not_remember_me
|
|
|
|
|
post :login, :user_login => 'jane', :user_password => 'sesame', :user_noexpiry => "off"
|
|
|
|
|
assert_nil @response.cookies["auth_token"]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_should_delete_token_on_logout
|
|
|
|
|
login_as :other_user
|
|
|
|
|
get :logout
|
2009-12-07 22:43:00 -05:00
|
|
|
assert_nil @response.cookies["auth_token"]
|
2009-06-02 21:22:50 +02:00
|
|
|
end
|
2012-04-20 14:38:00 +02:00
|
|
|
|
2009-06-02 21:22:50 +02:00
|
|
|
def test_should_login_with_cookie
|
|
|
|
|
users(:other_user).remember_me
|
|
|
|
|
@request.cookies["auth_token"] = auth_token_cookie_for(:other_user)
|
|
|
|
|
get :login
|
|
|
|
|
assert @controller.send(:logged_in?)
|
|
|
|
|
end
|
2012-04-20 14:38:00 +02:00
|
|
|
|
2009-06-02 21:22:50 +02:00
|
|
|
def test_should_fail_expired_cookie_login
|
|
|
|
|
users(:other_user).remember_me
|
|
|
|
|
users(:other_user).update_attribute :remember_token_expires_at, 5.minutes.ago.utc
|
|
|
|
|
@request.cookies["auth_token"] = auth_token_cookie_for(:other_user)
|
|
|
|
|
get :login
|
|
|
|
|
assert !@controller.send(:logged_in?)
|
|
|
|
|
end
|
2012-04-20 14:38:00 +02:00
|
|
|
|
2009-06-02 21:22:50 +02:00
|
|
|
def test_should_fail_cookie_login
|
|
|
|
|
users(:other_user).remember_me
|
2009-12-07 18:29:57 -05:00
|
|
|
@request.cookies["auth_token"] = 'invalid_auth_token'
|
2009-06-02 21:22:50 +02:00
|
|
|
get :login
|
|
|
|
|
assert !@controller.send(:logged_in?)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_current_user_nil
|
|
|
|
|
get :login
|
|
|
|
|
assert_nil @controller.current_user
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_current_user_correct
|
|
|
|
|
post :login, {:user_login => 'jane', :user_password => 'sesame', :user_noexpiry => 'off'}
|
|
|
|
|
assert_equal users(:other_user), @controller.current_user
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_prefs_nil
|
|
|
|
|
login_as nil
|
|
|
|
|
get :login
|
|
|
|
|
assert_nil @controller.prefs
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_prefs_correct
|
|
|
|
|
post :login, {:user_login => 'jane', :user_password => 'sesame', :user_noexpiry => 'off'}
|
|
|
|
|
assert_equal users(:other_user).prefs, @controller.prefs
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
2012-04-20 14:38:00 +02:00
|
|
|
|
2009-06-02 21:22:50 +02:00
|
|
|
def auth_token_cookie_for(user)
|
2009-12-07 18:29:57 -05:00
|
|
|
users(user).remember_token
|
2009-06-02 21:22:50 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|