@@ -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