X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/a12d4f62752f546f57421244e370e79965706ffb..f7aee769411a893c1059c529a220c0d25c72974f:/vendor/plugins/login_engine/test/unit/user_test.rb diff --git a/vendor/plugins/login_engine/test/unit/user_test.rb b/vendor/plugins/login_engine/test/unit/user_test.rb new file mode 100644 index 0000000..12fff2d --- /dev/null +++ b/vendor/plugins/login_engine/test/unit/user_test.rb @@ -0,0 +1,114 @@ +require File.dirname(__FILE__) + '/../test_helper' +class UserTest < Test::Unit::TestCase + + # load the fixture into the developer-specified table using the custom + # 'fixture' method. + 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