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

Commit da2e9ef

Browse files
authored
chore(tests): cleanup sessionToken endpoints and docs, r=@philbooth, @rfk
1 parent af53ea4 commit da2e9ef

File tree

7 files changed

+111
-312
lines changed

7 files changed

+111
-312
lines changed

db-server/index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,12 @@ function createServer(db) {
117117
api.del('/sessionToken/:id', withIdAndBody(db.deleteSessionToken))
118118
api.put('/sessionToken/:id', withIdAndBody(db.createSessionToken))
119119
api.post('/sessionToken/:id/update', withIdAndBody(db.updateSessionToken))
120-
api.get('/sessionToken/:id/device', withIdAndBody(db.sessionWithDevice))
120+
api.get('/sessionToken/:id/device', withIdAndBody(db.sessionToken))
121121

122122
api.get('/keyFetchToken/:id', withIdAndBody(db.keyFetchToken))
123123
api.del('/keyFetchToken/:id', withIdAndBody(db.deleteKeyFetchToken))
124124
api.put('/keyFetchToken/:id', withIdAndBody(db.createKeyFetchToken))
125125

126-
api.get('/sessionToken/:id/verified', withIdAndBody(db.sessionTokenWithVerificationStatus))
127126
api.get('/keyFetchToken/:id/verified', withIdAndBody(db.keyFetchTokenWithVerificationStatus))
128127
api.post('/tokens/:id/verify', withIdAndBody(db.verifyTokens))
129128
api.post('/tokens/:code/verifyCode', withParamsAndBody(db.verifyTokenCode))

db-server/test/backend/db_tests.js

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -353,21 +353,21 @@ module.exports = function (config, DB) {
353353
assert.deepEqual(token.emailCode, accountData.emailCode, 'token emailCode same as account emailCode')
354354
assert.equal(token.verifierSetAt, accountData.verifierSetAt, 'verifierSetAt is correct')
355355
assert.equal(token.accountCreatedAt, accountData.createdAt, 'accountCreatedAt is correct')
356-
assert.equal(token.mustVerify, undefined, 'mustVerify is undefined')
357-
assert.equal(token.tokenVerificationId, undefined, 'tokenVerificationId is undefined')
356+
assert.equal(!! token.mustVerify, !! sessionTokenData.mustVerify, 'mustVerify is set')
357+
assert.deepEqual(token.tokenVerificationId, sessionTokenData.tokenVerificationId, 'tokenVerificationId is set')
358358
})
359359
})
360360

361361
it('should update mustVerify to true, but not to false', () => {
362-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
362+
return db.sessionToken(sessionTokenData.tokenId)
363363
.then((token) => {
364364
assert.equal(token.mustVerify, false, 'mustVerify starts out as false')
365365
assert.equal(token.uaBrowser, 'mock browser', 'other fields have their default values')
366366
return db.updateSessionToken(sessionTokenData.tokenId, { mustVerify: true })
367367
})
368368
.then((result) => {
369369
assert.deepEqual(result, {}, 'Returned an empty object on session token update')
370-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
370+
return db.sessionToken(sessionTokenData.tokenId)
371371
})
372372
.then((token) => {
373373
assert.equal(token.mustVerify, true, 'mustVerify was correctly updated to true')
@@ -376,7 +376,7 @@ module.exports = function (config, DB) {
376376
})
377377
.then((result) => {
378378
assert.deepEqual(result, {}, 'Returned an empty object on session token update')
379-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
379+
return db.sessionToken(sessionTokenData.tokenId)
380380
})
381381
.then((token) => {
382382
assert.equal(token.mustVerify, true, 'mustVerify was not reset back to false')
@@ -385,7 +385,7 @@ module.exports = function (config, DB) {
385385
})
386386

387387
it('should get verification state', () => {
388-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
388+
return db.sessionToken(sessionTokenData.tokenId)
389389
.then((token) => {
390390
assert.deepEqual(token.tokenData, sessionTokenData.data, 'token data matches')
391391
assert.deepEqual(token.uid, accountData.uid, 'token belongs to this account')
@@ -415,7 +415,7 @@ module.exports = function (config, DB) {
415415
assert.equal(err.errno, 116, 'err.errno is correct')
416416
assert.equal(err.code, 404, 'err.code is correct')
417417

418-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
418+
return db.sessionToken(sessionTokenData.tokenId)
419419
})
420420
.then((token) => {
421421
assert.equal(!! token.mustVerify, !! sessionTokenData.mustVerify, 'mustVerify is correct')
@@ -429,7 +429,7 @@ module.exports = function (config, DB) {
429429
assert.equal(err.errno, 116, 'err.errno is correct')
430430
assert.equal(err.code, 404, 'err.code is correct')
431431

432-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
432+
return db.sessionToken(sessionTokenData.tokenId)
433433
})
434434
.then((token) => {
435435
assert.equal(!! token.mustVerify, !! sessionTokenData.mustVerify, 'mustVerify is correct')
@@ -440,7 +440,7 @@ module.exports = function (config, DB) {
440440
it('should verify session token', () => {
441441
return db.verifyTokens(sessionTokenData.tokenVerificationId, accountData)
442442
.then(() => {
443-
return db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)
443+
return db.sessionToken(sessionTokenData.tokenId)
444444
}, assert.fail)
445445
.then((token) => {
446446
assert.equal(token.mustVerify, null, 'mustVerify is null')
@@ -887,7 +887,7 @@ module.exports = function (config, DB) {
887887
})
888888

889889
it('should have created device', () => {
890-
return db.sessionWithDevice(sessionTokenData.tokenId)
890+
return db.sessionToken(sessionTokenData.tokenId)
891891
.then((s) => {
892892
assert.deepEqual(s.deviceId, deviceInfo.deviceId, 'id')
893893
assert.deepEqual(s.uid, sessionTokenData.uid, 'uid')
@@ -1714,15 +1714,13 @@ module.exports = function (config, DB) {
17141714
sessionTokenData = makeMockSessionToken(account.uid)
17151715
return db.createSessionToken(sessionTokenData.tokenId, sessionTokenData)
17161716
.then(() => {
1717-
return P.all([db.sessionToken(sessionTokenData.tokenId), db.sessionTokenWithVerificationStatus(sessionTokenData.tokenId)])
1717+
return db.sessionToken(sessionTokenData.tokenId)
17181718
})
17191719
})
1720-
.then((res) => {
1721-
res.forEach((session) => {
1722-
assert.equal(session.email, secondEmail.email, 'should equal new primary email')
1723-
assert.deepEqual(session.emailCode, secondEmail.emailCode, 'should equal new primary emailCode')
1724-
assert.deepEqual(session.uid, account.uid, 'should equal account uid')
1725-
})
1720+
.then((session) => {
1721+
assert.equal(session.email, secondEmail.email, 'should equal new primary email')
1722+
assert.deepEqual(session.emailCode, secondEmail.emailCode, 'should equal new primary emailCode')
1723+
assert.deepEqual(session.uid, account.uid, 'should equal account uid')
17261724
return P.all([db.accountRecord(secondEmail.email), db.accountRecord(account.email)])
17271725
})
17281726
.then((res) => {
@@ -1748,20 +1746,18 @@ module.exports = function (config, DB) {
17481746
tokenVerificationCode = sessionToken.tokenVerificationCode
17491747
return db.createSessionToken(tokenId, sessionToken)
17501748
.then(() => {
1751-
return db.sessionTokenWithVerificationStatus(tokenId)
1749+
return db.sessionToken(tokenId)
17521750
})
17531751
.then((session) => {
17541752
// Returns unverified session
17551753
assert.equal(session.mustVerify, sessionToken.mustVerify, 'mustVerify must match sessionToken')
17561754
assert.equal(session.tokenVerificationId.toString('hex'), sessionToken.tokenVerificationId.toString('hex'), 'tokenVerificationId must match sessionToken')
1757-
assert.ok(session.tokenVerificationCodeHash, 'tokenVerificationCodeHash exists')
1758-
assert.equal(session.tokenVerificationCodeExpiresAt, sessionToken.tokenVerificationCodeExpiresAt, 'tokenVerificationCodeExpiresAt must match sessionToken')
17591755

17601756
// Verify the session
17611757
return db.verifyTokenCode({code: tokenVerificationCode}, account)
17621758
})
17631759
.then(() => {
1764-
return db.sessionTokenWithVerificationStatus(tokenId)
1760+
return db.sessionToken(tokenId)
17651761
})
17661762
.then((session) => {
17671763
// Returns verified session

db-server/test/backend/remote.js

Lines changed: 2 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -324,14 +324,6 @@ module.exports = function(cfg, makeServer) {
324324
}, function(err) {
325325
testNotFound(err)
326326

327-
// Attempt to fetch a non-existent session token with its verification state
328-
return client.getThen('/sessionToken/' + user.sessionTokenId + '/verified')
329-
})
330-
.then(function(r) {
331-
assert(false, 'A non-existent session token should not have returned anything')
332-
}, function(err) {
333-
testNotFound(err)
334-
335327
// Create a session token
336328
return client.putThen('/sessionToken/' + user.sessionTokenId, user.sessionToken)
337329
})
@@ -364,31 +356,6 @@ module.exports = function(cfg, makeServer) {
364356
.then(function(r) {
365357
var token = r.obj
366358

367-
assert.deepEqual(token.tokenData, user.sessionToken.data, 'token data matches')
368-
assert.deepEqual(token.uid, user.accountId, 'token belongs to this account')
369-
assert.equal(token.createdAt, user.sessionToken.createdAt, 'createdAt matches')
370-
assert.equal(token.uaBrowser, user.sessionToken.uaBrowser, 'uaBrowser matches')
371-
assert.equal(token.uaBrowserVersion, user.sessionToken.uaBrowserVersion, 'uaBrowserVersion matches')
372-
assert.equal(token.uaOS, user.sessionToken.uaOS, 'uaOS matches')
373-
assert.equal(token.uaOSVersion, user.sessionToken.uaOSVersion, 'uaOSVersion matches')
374-
assert.equal(token.uaDeviceType, user.sessionToken.uaDeviceType, 'uaDeviceType matches')
375-
assert.equal(token.uaFormFactor, user.sessionToken.uaFormFactor, 'uaFormFactor matches')
376-
assert.equal(token.lastAccessTime, token.createdAt, 'lastAccessTime was set')
377-
assert.equal(token.authAt, token.createdAt, 'authAt was set to default')
378-
assert.equal(!! token.emailVerified, user.account.emailVerified, 'emailVerified same as account emailVerified')
379-
assert.equal(token.email, user.account.email, 'token.email same as account email')
380-
assert.deepEqual(token.emailCode, user.account.emailCode, 'token emailCode same as account emailCode')
381-
assert(token.verifierSetAt, 'verifierSetAt is set to a truthy value')
382-
assert(token.accountCreatedAt > 0, 'accountCreatedAt is positive number')
383-
assert.equal(token.mustVerify, undefined, 'mustVerify is undefined')
384-
assert.equal(token.tokenVerificationId, undefined, 'tokenVerificationId is undefined')
385-
386-
// Fetch the session token with its verification state
387-
return client.getThen('/sessionToken/' + user.sessionTokenId + '/verified')
388-
})
389-
.then(function(r) {
390-
var token = r.obj
391-
392359
assert.deepEqual(token.tokenData, user.sessionToken.data, 'token data matches')
393360
assert.deepEqual(token.uid, user.accountId, 'token belongs to this account')
394361
assert.equal(token.createdAt, user.sessionToken.createdAt, 'createdAt matches')
@@ -420,31 +387,6 @@ module.exports = function(cfg, makeServer) {
420387
.then(function(r) {
421388
var token = r.obj
422389

423-
assert.deepEqual(token.tokenData, verifiedUser.sessionToken.data, 'token data matches')
424-
assert.deepEqual(token.uid, verifiedUser.accountId, 'token belongs to this account')
425-
assert.equal(token.createdAt, verifiedUser.sessionToken.createdAt, 'createdAt matches')
426-
assert.equal(token.uaBrowser, verifiedUser.sessionToken.uaBrowser, 'uaBrowser matches')
427-
assert.equal(token.uaBrowserVersion, verifiedUser.sessionToken.uaBrowserVersion, 'uaBrowserVersion matches')
428-
assert.equal(token.uaOS, verifiedUser.sessionToken.uaOS, 'uaOS matches')
429-
assert.equal(token.uaOSVersion, verifiedUser.sessionToken.uaOSVersion, 'uaOSVersion matches')
430-
assert.equal(token.uaDeviceType, verifiedUser.sessionToken.uaDeviceType, 'uaDeviceType matches')
431-
assert.equal(token.uaFormFactor, verifiedUser.sessionToken.uaFormFactor, 'uaFormFactor matches')
432-
assert.equal(token.lastAccessTime, token.createdAt, 'lastAccessTime was set')
433-
assert.equal(token.authAt, token.createdAt, 'authAt was set to default')
434-
assert.equal(!! token.emailVerified, verifiedUser.account.emailVerified, 'emailVerified same as account emailVerified')
435-
assert.equal(token.email, verifiedUser.account.email, 'token.email same as account email')
436-
assert.deepEqual(token.emailCode, verifiedUser.account.emailCode, 'token emailCode same as account emailCode')
437-
assert(token.verifierSetAt, 'verifierSetAt is set to a truthy value')
438-
assert(token.accountCreatedAt > 0, 'accountCreatedAt is positive number')
439-
assert.equal(token.mustVerify, undefined, 'mustVerify is undefined')
440-
assert.equal(token.tokenVerificationId, undefined, 'tokenVerificationId is undefined')
441-
442-
// Fetch the verified session token with its verification state
443-
return client.getThen('/sessionToken/' + verifiedUser.sessionTokenId + '/verified')
444-
})
445-
.then(function(r) {
446-
var token = r.obj
447-
448390
assert.deepEqual(token.tokenData, verifiedUser.sessionToken.data, 'token data matches')
449391
assert.deepEqual(token.uid, verifiedUser.accountId, 'token belongs to this account')
450392
assert.equal(token.createdAt, verifiedUser.sessionToken.createdAt, 'createdAt matches')
@@ -493,13 +435,6 @@ module.exports = function(cfg, makeServer) {
493435
// Fetch the newly verified session token
494436
return client.getThen('/sessionToken/' + user.sessionTokenId)
495437
})
496-
.then(function(r) {
497-
assert.equal(r.obj.mustVerify, undefined, 'mustVerify is undefined')
498-
assert.equal(r.obj.tokenVerificationId, undefined, 'tokenVerificationId is undefined')
499-
500-
// Fetch the newly verified session token with its verification state
501-
return client.getThen('/sessionToken/' + user.sessionTokenId + '/verified')
502-
})
503438
.then(function(r) {
504439
assert.equal(r.obj.mustVerify, null, 'mustVerify is null')
505440
assert.equal(r.obj.tokenVerificationId, null, 'tokenVerificationId is null')
@@ -1571,21 +1506,18 @@ module.exports = function(cfg, makeServer) {
15711506
.spread((sessionToken, keyFetchToken) => {
15721507
respOkEmpty(sessionToken)
15731508
respOkEmpty(keyFetchToken)
1574-
return client.getThen('/sessionToken/' + user.sessionTokenId + '/verified')
1509+
return client.getThen('/sessionToken/' + user.sessionTokenId)
15751510
})
15761511
.then((r) => {
15771512
respOk(r)
1578-
const result = r.obj
1579-
assert.ok(result.tokenVerificationCodeHash, 'tokenVerificationCodeHash exists')
1580-
assert.equal(result.tokenVerificationCodeExpiresAt, user.sessionToken.tokenVerificationCodeExpiresAt, 'tokenVerificationCodeExpiresAt set')
15811513
return client.postThen('/tokens/' + user.sessionToken.tokenVerificationCode + '/verifyCode', {
15821514
uid: user.accountId
15831515
})
15841516
})
15851517
.then((r) => {
15861518
respOk(r)
15871519
return P.all([
1588-
client.getThen('/sessionToken/' + user.sessionTokenId + '/verified'),
1520+
client.getThen('/sessionToken/' + user.sessionTokenId),
15891521
client.getThen('/keyFetchToken/' + user.keyFetchTokenId + '/verified'),
15901522
])
15911523
})

docs/API.md

Lines changed: 8 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ The following datatypes are used throughout this document:
6767
* deleteDevice : `DELETE /account/:id/device/:deviceId`
6868
* Session Tokens:
6969
* sessionToken : `GET /sessionToken/:id`
70-
* sessionTokenWithVerificationStatus : `GET /sessionToken/:id/verified`
7170
* sessionWithDevice : `GET /sessionToken/:id/device`
7271
* deleteSessionToken : `DELETE /sessionToken/:id`
7372
* createSessionToken : `PUT /sessionToken/:id`
@@ -884,51 +883,6 @@ HTTP/1.1 200 OK
884883
Content-Type: application/json
885884
Content-Length: 285
886885
887-
{
888-
"data":"e2c3a8f73e826b9176e54e0f6ecb34b60b1e1979d254638f6b61d721c069d576",
889-
"uid":"6044486dd15b42e08b1fb9167415b9ac",
890-
"createdAt":1425004396952,
891-
"id":"522c251a1623e1f1db1f4fe68b9594d26772d6e77e04cb68e110c58600f97a77"
892-
}
893-
```
894-
895-
* Status Code : 200 OK
896-
* Content-Type : 'application/json'
897-
* Body : `[ ... <see example> ...]`
898-
* Status Code : 404 Not Found
899-
* Conditions: if this session `tokenId` doesn't exist
900-
* Content-Type : 'application/json'
901-
* Body : `{"message":"Not Found"}`
902-
* Status Code : 500 Internal Server Error
903-
* Conditions: if something goes wrong on the server
904-
* Content-Type : 'application/json'
905-
* Body : `{"code":"InternalError","message":"...<message related to the error>..."}`
906-
907-
## sessionTokenWithVerificationStatus : `GET /sessionToken/<tokenId>/verified`
908-
909-
### Example
910-
911-
```
912-
curl \
913-
-v \
914-
-X GET \
915-
http://localhost:8000/sessionToken/522c251a1623e1f1db1f4fe68b9594d26772d6e77e04cb68e110c58600f97a77/verified
916-
```
917-
918-
### Request
919-
920-
* Method : GET
921-
* Path : `/sessionToken/<tokenId>/verified`
922-
* tokenId : hex256
923-
* Params: none
924-
925-
### Response
926-
927-
```
928-
HTTP/1.1 200 OK
929-
Content-Type: application/json
930-
Content-Length: 285
931-
932886
{
933887
"data":"e2c3a8f73e826b9176e54e0f6ecb34b60b1e1979d254638f6b61d721c069d576",
934888
"uid":"6044486dd15b42e08b1fb9167415b9ac",
@@ -946,6 +900,13 @@ Content-Length: 285
946900
"verifierSetAt":1460548810011,
947901
"locale":"en_US",
948902
"accountCreatedAt":1460548810011,
903+
"deviceId":"eb87eb63c2063bf5fd35e83b535c123d073db9156e49b58bcbf543f9d35467f6",
904+
"deviceName":"foo",
905+
"deviceType":"mobile",
906+
"deviceCreatedAt":1460548810011,
907+
"deviceCallbackURL":null,
908+
"deviceCallbackPublicKey":null,
909+
"deviceCallbackIsExpired":false,
949910
"mustVerify":true,
950911
"tokenVerificationId":"12c41fac80fd6149f3f695e188b5f846"
951912
}
@@ -955,7 +916,7 @@ Content-Length: 285
955916
* Content-Type : 'application/json'
956917
* Body : `[ ... <see example> ...]`
957918
* Status Code : 404 Not Found
958-
* Conditions: if the sessionToken `tokenId` doesn't exist
919+
* Conditions: if this session `tokenId` doesn't exist
959920
* Content-Type : 'application/json'
960921
* Body : `{"message":"Not Found"}`
961922
* Status Code : 500 Internal Server Error

0 commit comments

Comments
 (0)