require File.dirname(__FILE__) + '/../test_helper' class UserTest < Test::Unit::TestCase # load the fixture into the developer-specified table using the custom # 'fixture' method. fixtures :users #fixture :users, :table_name => LoginEngine.config(:user_table), :class_name => "User" def setup LoginEngine::CONFIG[:salt] = "test-salt" end def test_auth assert_equal users(:bob), User.authenticate("bob", "atest") assert_nil User.authenticate("nonbob", "atest") end def test_passwordchange users(:longbob).change_password("nonbobpasswd") users(:longbob).save assert_equal users(:longbob), User.authenticate("longbob", "nonbobpasswd") assert_nil User.authenticate("longbob", "alongtest") users(:longbob).change_password("alongtest") users(:longbob).save assert_equal users(:longbob), User.authenticate("longbob", "alongtest") assert_nil User.authenticate("longbob", "nonbobpasswd") end def test_disallowed_passwords u = User.new u.login = "nonbob" u.email = "bobs@email.com" u.change_password("tiny") assert !u.save assert u.errors.invalid?('password') u.change_password("hugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehugehuge") assert !u.save assert u.errors.invalid?('password') u.change_password("") assert !u.save assert u.errors.invalid?('password') u.change_password("bobs_secure_password") assert u.save assert u.errors.empty? end def test_bad_logins u = User.new u.change_password("bobs_secure_password") u.email = "bobs@email.com" u.login = "x" assert !u.save assert u.errors.invalid?('login') u.login = "hugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhugebobhug" assert !u.save assert u.errors.invalid?('login') u.login = "" assert !u.save assert u.errors.invalid?('login') u.login = "okbob" assert u.save assert u.errors.empty? end def test_collision u = User.new u.login = "existingbob" u.change_password("bobs_secure_password") assert !u.save end def test_create u = User.new u.login = "nonexistingbob" u.change_password("bobs_secure_password") u.email = "bobs@email.com" assert u.save end def test_email_should_be_nominally_valid u = User.new u.login = "email_test" u.change_password("email_test_password") assert !u.save assert u.errors.invalid?('email') u.email = "invalid_email" assert !u.save assert u.errors.invalid?('email') u.email = "valid@email.com" assert u.save end end