Changeset 268
- Timestamp:
- 03/07/08 16:37:31 (7 months ago)
- Files:
-
- incubator/jumpstart/lib/authentable_entity.rb (modified) (2 diffs)
- incubator/jumpstart/test/unit/user_test.rb (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
incubator/jumpstart/lib/authentable_entity.rb
r214 r268 1 1 require 'bcrypt' 2 require 'digest/sha1' 3 2 4 module AuthentableEntity 3 5 include BCrypt … … 117 119 118 120 def generate_token 119 require 'digest/sha1' 120 self.activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join ) 121 Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join ) 121 122 end 122 123 incubator/jumpstart/test/unit/user_test.rb
r214 r268 4 4 describe "validations" do 5 5 it "should require a login" do 6 user = new_user(:login => nil) 7 user.should.not.be.valid 6 user = User.new(:login => nil) 8 7 user.should.have_errors(:login) 9 8 end 10 9 11 10 it "should require a unique login" do 12 another_user = create_user 13 14 user = new_user(:login => another_user.login) 15 user.should.not.be.valid 11 User.stubs(:find).returns(stub("another user with same login")) 12 13 user = User.new(:login => 'foo') 16 14 user.should.have_errors(:login) 17 15 end 18 16 19 17 it "should require an email" do 20 user = new_user(:email => nil) 21 user.should.not.be.valid 18 user = User.new(:email => nil) 22 19 user.should.have_errors(:email) 23 20 end 24 21 25 22 it "should require a unique email" do 26 another_user = create_user 27 28 user = new_user(:email => another_user.email) 29 user.should.not.be.valid 23 User.stubs(:find).returns(stub("another user with same email")) 24 25 user = User.new(:email => 'foo@example.com') 30 26 user.should.have_errors(:email) 31 27 end 32 28 33 29 it "should require a password" do 34 user = new_user(:password => nil) 35 user.should.not.be.valid 30 user = User.new(:password => nil) 36 31 user.should.have_errors(:password) 37 32 end 38 33 39 34 it "should require a password confirmation" do 40 user = new_user(:password_confirmation => nil) 41 user.should.not.be.valid 35 user = User.new(:password_confirmation => nil) 42 36 user.should.have_errors(:password_confirmation) 43 37 end … … 45 39 46 40 describe "creation" do 47 it "should generate activation code" do 48 create_user.activation_code.should.not.be.nil 49 end 50 51 it "should identify the user as not active" do 52 create_user.should.not.be.active 53 end 41 it "should use token for activation code" do 42 User.any_instance.stubs(:generate_token).returns("abcdefg") 43 User.new.send(:make_activation_code).should == "abcdefg" 44 end 45 46 it "should generate activation code after create" do 47 user = create_user 48 user.activation_code.should.not.be.nil 49 end 50 51 it "should identify the user as not active when they have an activation code" do 52 user = User.new 53 user.activation_code = "foo" 54 user.should.not.be.active 55 end 56 57 it "should identify the user as active when they dont have an activation code" do 58 User.new(:activation_code => nil).should.be.active 59 end 60 54 61 end 55 62 … … 92 99 93 100 describe "activation" do 94 before do 95 @user = create_user 96 end 97 101 98 102 it "should remove the activation code" do 99 @user.activate 100 @user.activation_code.should.be.nil 103 user = User.new(:activation_code => "foo") 104 user.stubs(:save).returns(true) 105 user.activate 106 user.activation_code.should.be.nil 101 107 end 102 108 103 109 it "should set the activated at timestamp" do 104 @user.activate 105 @user.activated_at.should.not.be.nil 110 user = User.new(:activation_code => "foo") 111 user.stubs(:save).returns(true) 112 user.activate 113 user.activated_at.should.not.be.nil 106 114 end 107 115 108 116 it "should identify the user as recently activated" do 109 @user.activate 110 @user.should.be.recently_activated 117 user = User.new(:activation_code => "foo") 118 user.stubs(:save).returns(true) 119 user.activate 120 user.should.be.recently_activated 111 121 end 112 122 113 123 it "should identify the user as active" do 114 @user.activate 115 @user.should.be.active 124 user = User.new(:activation_code => "foo") 125 user.stubs(:save).returns(true) 126 user.activate 127 user.should.be.active 116 128 end 117 129 … … 119 131 120 132 describe "remember me" do 121 before do122 @user = create_user123 end124 133 125 134 it "should set remember token" do 126 @user.remember_me 127 @user.remember_token.should.not.be.nil 135 user = User.new 136 user.stubs(:save).returns(false) 137 user.remember_me 138 user.remember_token.should.not.be.nil 128 139 end 129 140 130 141 it "should set remember token expiration" do 131 @user.remember_me 132 @user.remember_token_expires_at.should.not.be.nil 142 user = User.new 143 user.stubs(:save).returns(false) 144 user.remember_me 145 user.remember_token_expires_at.should.not.be.nil 133 146 end 134 147 135 148 it "should set remember token expiration to given duration" do 149 user = User.new 150 user.stubs(:save).returns(false) 151 136 152 before = 1.week.from_now.utc 137 @user.remember_me_for 1.week153 user.remember_me_for 1.week 138 154 after = 1.week.from_now.utc 139 @user.remember_token_expires_at.between?(before, after).should == true155 user.remember_token_expires_at.between?(before, after).should == true 140 156 end 141 157 142 158 it "should set remember token expiration to a specific time" do 159 user = User.new 160 user.stubs(:save).returns(false) 161 143 162 time = 1.week.from_now.utc 144 @user.remember_me_until time145 @user.remember_token_expires_at.should == time163 user.remember_me_until time 164 user.remember_token_expires_at.should == time 146 165 end 147 166 148 167 it "should default remember token expiration to 2 weeks" do 168 user = User.new 169 user.stubs(:save).returns(false) 170 149 171 before = 2.weeks.from_now.utc 150 @user.remember_me172 user.remember_me 151 173 after = 2.weeks.from_now.utc 152 @user.remember_token_expires_at.between?(before, after).should == true174 user.remember_token_expires_at.between?(before, after).should == true 153 175 end 154 176 end 155 177 156 178 describe "forget me" do 157 before do158 @user = create_user159 @user.remember_me160 end161 179 162 180 it "should unset remember token" do 163 @user.forget_me 164 @user.remember_token.should.be.nil 181 user = User.new(:remember_token => "foo") 182 user.forget_me 183 user.remember_token.should.be.nil 165 184 end 166 185 167 186 it "should unset remember token expiration" do 168 @user.forget_me 169 @user.remember_token_expires_at.should.be.nil 187 user = User.new(:remember_token_expires_at => "foo") 188 user.forget_me 189 user.remember_token_expires_at.should.be.nil 170 190 end 171 191 end 172 192 173 193 describe "resetting password" do 174 before do175 @user = create_user176 @old_password = @user.password177 end178 194 179 195 it "should change the password" do 180 @user.reset_password 181 @user.password.should.not == @old_password 182 end 183 184 it "should not authenticate using old password" do 185 @user.reset_password 186 User.authenticate(@user.email, @old_password).should.be.nil 196 user = User.new 197 user.stubs(:save) 198 user.expects(:password=).with(anything) 199 user.reset_password 187 200 end 188 201 189 202 it "should identify the user as resetting their password" do 190 @user.reset_password 191 @user.recently_reset_password?.should == true 203 user = User.new 204 user.stubs(:save) 205 user.reset_password 206 user.recently_reset_password?.should == true 192 207 end 193 208 end
