Skip to content

Commit 5fb50f2

Browse files
committed
Use date_arithmetic extension in active_sessions spec
This can prevent spurious failures if the database server time has diverged too much compared to the local system time.
1 parent 4a63b97 commit 5fb50f2

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

spec/active_sessions_spec.rb

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -115,91 +115,95 @@
115115
login
116116
page.body.must_include "Logged In"
117117

118-
DB[:account_active_session_keys].update(:last_use=>Time.now - 86400/2)
118+
past_time = lambda do |seconds|
119+
Sequel.date_sub(Sequel::CURRENT_TIMESTAMP, :seconds=>seconds)
120+
end
121+
122+
DB[:account_active_session_keys].update(:last_use=>past_time.call(86400/2))
119123
visit '/'
120124
page.body.must_include "Logged In"
121125

122-
DB[:account_active_session_keys].update(:last_use=>Time.now - 86400*2)
126+
DB[:account_active_session_keys].update(:last_use=>past_time.call(86400*2))
123127
visit '/'
124128
page.body.must_include "Not Logged"
125129

126130
login
127131

128-
DB[:account_active_session_keys].update(:created_at=>Time.now - 86400*29)
132+
DB[:account_active_session_keys].update(:created_at=>past_time.call(86400*29))
129133
visit '/'
130134
page.body.must_include "Logged In"
131135

132-
DB[:account_active_session_keys].update(:created_at=>Time.now - 86400*31)
136+
DB[:account_active_session_keys].update(:created_at=>past_time.call(86400*31))
133137
visit '/'
134138
page.body.must_include "Not Logged"
135139

136140
session_inactivity_deadline = 50
137141
login
138142

139-
DB[:account_active_session_keys].update(:last_use=>Time.now - 25)
143+
DB[:account_active_session_keys].update(:last_use=>past_time.call(25))
140144
visit '/'
141145
page.body.must_include "Logged In"
142146

143-
DB[:account_active_session_keys].update(:last_use=>Time.now - 75)
147+
DB[:account_active_session_keys].update(:last_use=>past_time.call(75))
144148
visit '/'
145149
page.body.must_include "Not Logged"
146150

147151
session_lifetime_deadline = 100
148152
login
149153

150-
DB[:account_active_session_keys].update(:created_at=>Time.now - 50)
154+
DB[:account_active_session_keys].update(:created_at=>past_time.call(50))
151155
visit '/'
152156
page.body.must_include "Logged In"
153157

154-
DB[:account_active_session_keys].update(:created_at=>Time.now - 150)
158+
DB[:account_active_session_keys].update(:created_at=>past_time.call(150))
155159
visit '/'
156160
page.body.must_include "Not Logged"
157161

158162
session_inactivity_deadline = 50
159163
session_lifetime_deadline = nil
160164
login
161165

162-
DB[:account_active_session_keys].update(:last_use=>Time.now - 25)
166+
DB[:account_active_session_keys].update(:last_use=>past_time.call(25))
163167
visit '/'
164168
page.body.must_include "Logged In"
165169

166-
DB[:account_active_session_keys].update(:last_use=>Time.now - 75)
170+
DB[:account_active_session_keys].update(:last_use=>past_time.call(75))
167171
visit '/'
168172
page.body.must_include "Not Logged"
169173

170174
session_inactivity_deadline = nil
171175
session_lifetime_deadline = 100
172176
login
173177

174-
DB[:account_active_session_keys].update(:created_at=>Time.now - 50)
178+
DB[:account_active_session_keys].update(:created_at=>past_time.call(50))
175179
visit '/'
176180
page.body.must_include "Logged In"
177181

178-
DB[:account_active_session_keys].update(:created_at=>Time.now - 150)
182+
DB[:account_active_session_keys].update(:created_at=>past_time.call(150))
179183
visit '/'
180184
page.body.must_include "Not Logged"
181185

182186
session_inactivity_deadline = 10
183187
session_lifetime_deadline = 100
184188
login
185189

186-
DB[:account_active_session_keys].update(:last_use=>Time.now - 5, :created_at=>Time.now - 50)
190+
DB[:account_active_session_keys].update(:last_use=>past_time.call(5), :created_at=>past_time.call(50))
187191
visit '/'
188192
page.body.must_include "Logged In"
189193

190-
DB[:account_active_session_keys].update(:last_use=>Time.now - 15, :created_at=>Time.now - 150)
194+
DB[:account_active_session_keys].update(:last_use=>past_time.call(15), :created_at=>past_time.call(150))
191195
visit '/'
192196
page.body.must_include "Not Logged"
193197

194198
session_inactivity_deadline = nil
195199
session_lifetime_deadline = nil
196200
login
197201

198-
DB[:account_active_session_keys].update(:last_use=>Time.now - 5, :created_at=>Time.now - 50)
202+
DB[:account_active_session_keys].update(:last_use=>past_time.call(5), :created_at=>past_time.call(50))
199203
visit '/'
200204
page.body.must_include "Logged In"
201205

202-
DB[:account_active_session_keys].update(:last_use=>Time.now - 86400, :created_at=>Time.now - 150)
206+
DB[:account_active_session_keys].update(:last_use=>past_time.call(86400), :created_at=>past_time.call(150))
203207
visit '/'
204208
page.body.must_include "Logged In"
205209
t = DB[:account_active_session_keys].get(:last_use)

0 commit comments

Comments
 (0)