-
Notifications
You must be signed in to change notification settings - Fork 215
/
user_test.rb
154 lines (126 loc) · 4.16 KB
/
user_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# encoding: UTF-8
require "test_helper"
class UserTest < MiniTest::Rails::Model
describe "#at_replies" do
it "returns all at_replies for this user" do
u = Factory(:user, :username => "steve")
update = Factory.create(:update, :text => "@steve oh hai!")
Factory.create(:update, :text => "just some other update")
assert_equal 1, u.at_replies({}).count
assert_equal update.id, u.at_replies({}).first.id
end
it "returns all at_replies for a username containing ." do
u = Factory(:user, :username => "hello.there")
u1 = Factory(:user, :username => "helloothere")
update = Factory.create(:update, :text => "@hello.there how _you_ doin'?")
assert_equal 1, u.at_replies({}).count
assert_equal 0, u1.at_replies({}).count
end
end
describe "username" do
it "must be unique" do
Factory(:user, :username => "steve")
u = Factory.build(:user, :username => "steve")
refute u.save
end
it "must be unique regardless of case" do
Factory(:user, :username => "steve")
u = Factory.build(:user, :username => "Steve")
refute u.save
end
it "must not be long" do
u = Factory.build(:user, :username => "burningTyger_will_fail_with_this_username")
refute u.save
end
it "must not contain special chars" do
["something@something.com", "another'quirk", ".boundary_case.", "another..case", "another/random\\test", "yet]another", ".Ὁμηρος", "I have spaces"].each do |i|
u = Factory.build(:user, :username => i)
refute u.save, "contains restricted characters."
end
["Ὁμηρος"].each do |i|
u = Factory.build(:user, :username => i)
assert u.save, "characters being restricted unintentionally."
end
end
it "must not be empty" do
u = Factory.build(:user, :username => "")
refute u.save, "blank username"
end
it "must not be nil" do
u = Factory.build(:user, :username => nil)
refute u.save, "nil username"
end
end
describe "twitter auth" do
it "has twitter" do
u = Factory.create(:user)
a = Factory.create(:authorization, :user => u)
assert u.twitter?
end
it "returns twitter" do
u = Factory.create(:user)
a = Factory.create(:authorization, :user => u)
assert_equal a, u.twitter
end
end
describe "facebook auth" do
it "has facebook" do
u = Factory.create(:user)
a = Factory.create(:authorization, :user => u, :provider => "facebook")
assert u.facebook?
end
it "returns facebook" do
u = Factory.create(:user)
a = Factory.create(:authorization, :user => u, :provider => "facebook")
assert_equal a, u.facebook
end
end
describe "email" do
it "changes email" do
u = Factory.create(:user)
u.edit_user_profile(:email => 'team@jackhq.com')
u.save
assert_equal u.email_confirmed, false
end
it "does not change email" do
u = Factory.create(:user)
assert_equal u.email_confirmed.nil?, true
end
end
describe "reset password" do
it "sets the token" do
u = Factory.create(:user)
assert_nil u.perishable_token
assert_nil u.password_reset_sent
u.set_password_reset_token
refute u.perishable_token.nil?
refute u.password_reset_sent.nil?
end
it "changes the password" do
u = Factory.create(:user)
u.password = "test_password"
u.save
prev_pass = u.hashed_password
u.reset_password("password")
assert u.hashed_password != prev_pass
end
end
describe "email confirmation" do
it "allows unconfirmed emails to be entered more than once" do
u = Factory.create(:user)
u.edit_user_profile(:email => 'team@jackhq.com')
u2 = Factory.create(:user)
u2.email = 'team@jackhq.com'
assert u2.valid?
end
it "does not allow confirmed emails to be entered more than once" do
u = Factory.create(:user)
u.edit_user_profile(:email => 'team@jackhq.com')
u.email_confirmed = true
u.save
u2 = Factory.create(:user)
u2.edit_user_profile(:email => 'team@jackhq.com')
refute u2.valid?
end
end
end