Added the RoR Login-Engine and activated it on the site.
[selectricity-live] / 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 (file)
index 0000000..12fff2d
--- /dev/null
@@ -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

Benjamin Mako Hill || Want to submit a patch?