beast rev 2066
[beast-modified.git] / test / unit / user_test.rb
blobedfc773d8cab2fb6e30649a9ac8d8dd3cc43042c
1 require File.dirname(__FILE__) + '/../test_helper'
3 class UserTest < Test::Unit::TestCase
4   all_fixtures
6   # Replace this with your real tests.
7   def test_display_name
8     assert users(:aaron).display_name != users(:aaron).login
9     assert_equal "sam", users(:sam).display_name
10     # login overrules display_name when it is not present
11     users(:aaron).update_attributes :display_name => ''
12     assert_equal users(:aaron).login, users(:aaron).display_name
13     users(:aaron).update_attributes :display_name => nil
14     assert_equal users(:aaron).login, users(:aaron).display_name
15   end
16   
17   def test_no_stupid_logins
18     u = users(:sam)
19     %w(bob max123 imthemanbetyoucanttouchme tj_supaman).each do |login|
20       u.login = login
21       assert_valid u
22     end
24     ['007', '1234556789', 'f451', "sam'er", "samm-ie", "<script>alert('im in ur base, killin ur d00ds')</script>"].each do |login|
25       u.login = login
26       assert ! u.valid?
27     end
28   end
30   def test_email_address_validation
31     u = users(:sam)
32     u.email = "sam"
33     assert ! u.valid?
34     u.email = "johh.doe@google.com"
35     assert u.valid?
36     u.email = "johh_doe@mail.mx.1.google.com"
37     assert u.valid?
38     u.email = "johh_doe+crazy-iness@mail.mx.1.google.com"
39     assert u.valid?
40     u.email = "sam@@colgate.com"
41     assert ! u.valid?
42   end
43   
44   def test_minimum_password_length
45     u = users(:sam)
46     u.password = "bluegill"
47     assert_valid u
48     u.password = "fishing"
49     assert_valid u
50     u.password = "trout"
51     assert_valid u
52     # fewer than 5 chars are not valid passwords
53     u.password = "bass"
54     assert ! u.valid?
55     u.password = "chi"
56     assert ! u.valid?
57   end
58   
59   def test_no_valid_display_names
60     u=users(:sam)
61     u.display_name="1234556789"
62     assert ! u.valid?
63     u.display_name="f451"
64     assert ! u.valid?
66     u.display_name="Josh Goebel"
67     assert u.valid?
68     u.display_name="Josh E. Goebel"
69     assert u.valid?
70     u.display_name="Zeph'er Cochran"
71     assert u.valid?
73   end
74   
75   def test_first_user_becomes_admin
76     User.delete_all
77     u=User.create(:email => "bob@aol.com", :password => "zoegirl", :password_confirmation => "zoegirl")
78     u.login="bobby"
79     assert u.save
80     assert u.admin?
81     assert u.activated?
82     u=User.create(:email => "woody@aol.com", :password => "zoegirl", :password_confirmation => "zoegirl")
83     u.login="woody"
84     assert ! u.admin?    
85     assert ! u.activated?
86   end
87   
88   def test_login_token
89     assert_nil users(:aaron).login_key
90     assert_nil users(:aaron).login_key_expires_at
91     users(:aaron).reset_login_key!
92     assert_equal 40, users(:aaron).login_key.length
93     assert users(:aaron).login_key_expires_at < Time.now.utc+1.year+1.minute
94     assert users(:aaron).login_key_expires_at > Time.now.utc+1.year-1.minute
95   end
96   
97   def test_open_id_login
98     u = User.new(:openid_url => 'http://foo', :email => 'zoe@girl.com')
99     u.login = 'zoegirl'
100     assert_valid u
101   end