@@ -13,6 +13,7 @@ def create_resource
1313 user = create_user
1414 user . expects ( :valid? ) . never
1515 user . remember_me!
16+ assert user . remember_created_at
1617 end
1718
1819 test 'forget_me should not clear remember token if using salt' do
@@ -33,13 +34,45 @@ def create_resource
3334 test 'serialize into cookie' do
3435 user = create_user
3536 user . remember_me!
36- assert_equal [ user . to_key , user . authenticatable_salt ] , User . serialize_into_cookie ( user )
37+ id , token , date = User . serialize_into_cookie ( user )
38+ assert_equal id , user . to_key
39+ assert_equal token , user . authenticatable_salt
40+ assert date . is_a? ( Time )
3741 end
3842
3943 test 'serialize from cookie' do
4044 user = create_user
4145 user . remember_me!
42- assert_equal user , User . serialize_from_cookie ( user . to_key , user . authenticatable_salt )
46+ assert_equal user , User . serialize_from_cookie ( user . to_key , user . authenticatable_salt , Time . now . utc )
47+ end
48+
49+ test 'serialize from cookie should return nil if no resource is found' do
50+ assert_nil resource_class . serialize_from_cookie ( [ 0 ] , "123" , Time . now . utc )
51+ end
52+
53+ test 'serialize from cookie should return nil if no timestamp' do
54+ user = create_user
55+ user . remember_me!
56+ assert_nil User . serialize_from_cookie ( user . to_key , user . authenticatable_salt )
57+ end
58+
59+ test 'serialize from cookie should return nil if timestamp is earlier than token creation' do
60+ user = create_user
61+ user . remember_me!
62+ assert_nil User . serialize_from_cookie ( user . to_key , user . authenticatable_salt , 1 . day . ago )
63+ end
64+
65+ test 'serialize from cookie should return nil if timestamp is older than remember_for' do
66+ user = create_user
67+ user . remember_created_at = 1 . month . ago
68+ user . remember_me!
69+ assert_nil User . serialize_from_cookie ( user . to_key , user . authenticatable_salt , 3 . weeks . ago )
70+ end
71+
72+ test 'serialize from cookie me return nil if is a valid resource with invalid token' do
73+ user = create_user
74+ user . remember_me!
75+ assert_nil User . serialize_from_cookie ( user . to_key , "123" , Time . now . utc )
4376 end
4477
4578 test 'raises a RuntimeError if authenticatable_salt is nil or empty' do
@@ -93,28 +126,7 @@ def user.authenticable_salt; ""; end
93126 resource . forget_me!
94127 end
95128
96- test 'remember is expired if not created at timestamp is set' do
97- assert create_resource . remember_expired?
98- end
99-
100- test 'serialize should return nil if no resource is found' do
101- assert_nil resource_class . serialize_from_cookie ( [ 0 ] , "123" )
102- end
103-
104- test 'remember me return nil if is a valid resource with invalid token' do
105- resource = create_resource
106- assert_nil resource_class . serialize_from_cookie ( [ resource . id ] , "123" )
107- end
108-
109- test 'remember for should fallback to devise remember for default configuration' do
110- swap Devise , remember_for : 1 . day do
111- resource = create_resource
112- resource . remember_me!
113- assert_not resource . remember_expired?
114- end
115- end
116-
117- test 'remember expires at should sum date of creation with remember for configuration' do
129+ test 'remember expires at uses remember for configuration' do
118130 swap Devise , remember_for : 3 . days do
119131 resource = create_resource
120132 resource . remember_me!
@@ -125,77 +137,6 @@ def user.authenticable_salt; ""; end
125137 end
126138 end
127139
128- test 'remember should be expired if remember_for is zero' do
129- swap Devise , remember_for : 0 . days do
130- Devise . remember_for = 0 . days
131- resource = create_resource
132- resource . remember_me!
133- assert resource . remember_expired?
134- end
135- end
136-
137- test 'remember should be expired if it was created before limit time' do
138- swap Devise , remember_for : 1 . day do
139- resource = create_resource
140- resource . remember_me!
141- resource . remember_created_at = 2 . days . ago
142- resource . save
143- assert resource . remember_expired?
144- end
145- end
146-
147- test 'remember should not be expired if it was created within the limit time' do
148- swap Devise , remember_for : 30 . days do
149- resource = create_resource
150- resource . remember_me!
151- resource . remember_created_at = ( 30 . days . ago + 2 . minutes )
152- resource . save
153- assert_not resource . remember_expired?
154- end
155- end
156-
157- test 'if extend_remember_period is false, remember_me! should generate a new timestamp if expired' do
158- swap Devise , remember_for : 5 . minutes do
159- resource = create_resource
160- resource . remember_me! ( false )
161- assert resource . remember_created_at
162-
163- resource . remember_created_at = old = 10 . minutes . ago
164- resource . save
165-
166- resource . remember_me! ( false )
167- assert_not_equal old . to_i , resource . remember_created_at . to_i
168- end
169- end
170-
171- test 'if extend_remember_period is false, remember_me! should not generate a new timestamp' do
172- swap Devise , remember_for : 1 . year do
173- resource = create_resource
174- resource . remember_me! ( false )
175- assert resource . remember_created_at
176-
177- resource . remember_created_at = old = 10 . minutes . ago . utc
178- resource . save
179-
180- resource . remember_me! ( false )
181- assert_equal old . to_i , resource . remember_created_at . to_i
182- end
183- end
184-
185- test 'if extend_remember_period is true, remember_me! should always generate a new timestamp' do
186- swap Devise , remember_for : 1 . year do
187- resource = create_resource
188- resource . remember_me! ( true )
189- assert resource . remember_created_at
190-
191- resource . remember_created_at = old = 10 . minutes . ago
192- resource . save
193-
194- resource . remember_me! ( true )
195- assert_not_equal old , resource . remember_created_at
196- end
197- end
198-
199140 test 'should have the required_fields array' do
200141 assert_same_content Devise ::Models ::Rememberable . required_fields ( User ) , [
201142 :remember_created_at
0 commit comments