Skip to content
This repository was archived by the owner on Apr 3, 2019. It is now read-only.

Commit 3031098

Browse files
philboothvladikoff
authored andcommitted
chore(tests): tidy up the remote db session token tests
1 parent bfecf6d commit 3031098

File tree

1 file changed

+55
-29
lines changed

1 file changed

+55
-29
lines changed

test/remote/db_tests.js

Lines changed: 55 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -139,25 +139,35 @@ describe('remote db', function() {
139139
it(
140140
'session token handling',
141141
() => {
142-
var tokenId
142+
let tokenId
143+
144+
// Fetch all sessions for the account
143145
return db.sessions(account.uid)
144-
.then(function(sessions) {
146+
.then(sessions => {
145147
assert.ok(Array.isArray(sessions), 'sessions is array')
146148
assert.equal(sessions.length, 0, 'sessions is empty')
149+
150+
// Fetch the email record
147151
return db.emailRecord(account.email)
148152
})
149-
.then(function(emailRecord) {
153+
.then(emailRecord => {
150154
emailRecord.createdAt = Date.now()
151155
emailRecord.tokenVerificationId = account.tokenVerificationId
156+
157+
// Create a session token
152158
return db.createSessionToken(emailRecord, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101 Firefox/41.0')
153159
})
154-
.then(function(sessionToken) {
160+
.then(sessionToken => {
155161
assert.deepEqual(sessionToken.uid, account.uid)
156162
tokenId = sessionToken.tokenId
163+
164+
// Simulate a cache miss in redis
157165
redisGetSpy.returns(P.resolve(null))
166+
167+
// Fetch all sessions for the account
158168
return db.sessions(account.uid)
159169
})
160-
.then(function(sessions) {
170+
.then(sessions => {
161171
assert.equal(sessions.length, 1, 'sessions contains one item')
162172
assert.equal(Object.keys(sessions[0]).length, 16, 'session has correct number of properties')
163173
assert.equal(typeof sessions[0].tokenId, 'string', 'tokenId property is not a buffer')
@@ -169,6 +179,8 @@ describe('remote db', function() {
169179
assert.equal(sessions[0].uaOSVersion, '10.10', 'uaOSVersion property is correct')
170180
assert.equal(sessions[0].uaDeviceType, null, 'uaDeviceType property is correct')
171181
assert.equal(sessions[0].lastAccessTime, sessions[0].createdAt, 'lastAccessTime property is correct')
182+
183+
// Fetch the session token
172184
return db.sessionToken(tokenId)
173185
})
174186
.then(sessionToken => {
@@ -184,25 +196,30 @@ describe('remote db', function() {
184196
assert.equal(sessionToken.emailCode, account.emailCode)
185197
assert.equal(sessionToken.emailVerified, account.emailVerified)
186198
assert.equal(sessionToken.lifetime < Infinity, true)
187-
return sessionToken
188-
})
189-
.then(function(sessionToken) {
190-
// override lastAccessTimeUpdates flag
199+
200+
// Disable session token updates
191201
lastAccessTimeUpdates.enabled = false
202+
203+
// Attempt to update the session token
192204
return db.updateSessionToken(sessionToken)
193205
})
194-
.then(function(result) {
195-
assert.equal(undefined, result)
206+
.then(result => {
207+
assert.equal(result, undefined)
196208
assert.equal(redisSetSpy.lastCall, null, 'session token was not updated if lastAccessTimeUpdates flag is false')
197-
// reset lastAccessTimeUpdates flag
209+
210+
// Enable session token updates
198211
lastAccessTimeUpdates.enabled = true
212+
213+
// Fetch the session token
199214
return db.sessionToken(tokenId)
200215
})
201-
.then(function(sessionToken) {
216+
.then(sessionToken => {
202217
getGeoDataSpy.returns(P.resolve({location: {state: 'Mordor', country: 'ME'}}))
218+
219+
// Update the session token
203220
return db.updateSessionToken(sessionToken, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:41.0) Gecko/20100101 Firefox/41.0', '1.1.1.1')
204221
})
205-
.then(function(sessionTokens) {
222+
.then(() => {
206223
assert.equal(redisSetSpy.lastCall.args[0], account.uid)
207224

208225
const redisSetArgs = JSON.parse(redisSetSpy.lastCall.args[1])
@@ -217,37 +234,43 @@ describe('remote db', function() {
217234
assert.equal(token.location.country, 'ME', 'country is correct')
218235
assert.ok(token.lastAccessTime)
219236
assert.ok(token.createdAt)
237+
238+
// Fetch the session token
220239
return db.sessionToken(tokenId)
221240
})
222-
.then(function(sessionToken) {
241+
.then(sessionToken => {
223242
getGeoDataSpy.returns(P.reject())
243+
244+
// Update the session token
224245
return db.updateSessionToken(sessionToken, 'Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0', '1.1.1.1')
225246
})
226-
.then(function(tokens) {
247+
.then(tokens => {
227248
redisGetSpy.returns(P.resolve(JSON.stringify(tokens)))
249+
250+
// Fetch all sessions for the account
228251
return db.sessions(account.uid)
229252
})
230-
.then(function(sessions) {
253+
.then(sessions => {
231254
assert.equal(sessions.length, 1, 'sessions still contains one item')
232255
assert.equal(sessions[0].uaBrowser, 'Firefox Mobile', 'uaBrowser property is correct')
233256
assert.equal(sessions[0].uaBrowserVersion, '41', 'uaBrowserVersion property is correct')
234257
assert.equal(sessions[0].uaOS, 'Android', 'uaOS property is correct')
235258
assert.equal(sessions[0].uaOSVersion, '4.4', 'uaOSVersion property is correct')
236259
assert.equal(sessions[0].uaDeviceType, 'mobile', 'uaDeviceType property is correct')
237260
assert.equal(sessions[0].location, null, 'location property is correct')
261+
262+
// Fetch the session token
238263
return db.sessionToken(tokenId)
239264
})
240-
.then(function(sessionToken) {
265+
.then(sessionToken => {
241266
// this returns previously stored data since sessionToken doesnt read from cache
242267
assert.equal(sessionToken.uaBrowser, 'Firefox')
243268
assert.equal(sessionToken.uaBrowserVersion, '41')
244269
assert.equal(sessionToken.uaOS, 'Mac OS X')
245270
assert.equal(sessionToken.uaOSVersion, '10.10')
246271
assert.ok(sessionToken.lastAccessTime >= sessionToken.createdAt)
247272
assert.ok(sessionToken.lastAccessTime <= Date.now())
248-
return sessionToken
249-
})
250-
.then(function(sessionToken) {
273+
251274
const mockTokens = JSON.stringify({
252275
idToNotDelete: {
253276
uid: sessionToken.uid,
@@ -259,21 +282,24 @@ describe('remote db', function() {
259282
}
260283
})
261284
redisGetSpy.returns(P.resolve(mockTokens))
285+
286+
// Delete the session token
262287
return db.deleteSessionToken(sessionToken)
263288
})
264-
.then(function() {
289+
.then(() => {
265290
const redisSetArgs = JSON.parse(redisSetSpy.lastCall.args[1])
266291
assert.equal(Object.keys(redisSetArgs).length, 1)
267292
assert.ok(redisSetArgs.idToNotDelete)
268293

294+
// Attempt to delete the deleted session token
269295
return db.sessionToken(tokenId)
270-
.then(function(sessionToken) {
271-
assert(false, 'The above sessionToken() call should fail, since the sessionToken has been deleted')
272-
}, function(err) {
273-
assert.equal(err.errno, 110, 'sessionToken() fails with the correct error code')
274-
var msg = 'Error: The authentication token could not be found'
275-
assert.equal(msg, '' + err, 'sessionToken() fails with the correct message')
276-
})
296+
.then(sessionToken => {
297+
assert(false, 'db.sessionToken should have failed')
298+
}, err => {
299+
assert.equal(err.errno, 110, 'sessionToken() fails with the correct error code')
300+
var msg = 'Error: The authentication token could not be found'
301+
assert.equal(msg, '' + err, 'sessionToken() fails with the correct message')
302+
})
277303
})
278304
}
279305
)

0 commit comments

Comments
 (0)