@@ -353,7 +353,7 @@ 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 , ! ! sessionTokenData . mustVerify , 'mustVerify is set' )
356+ assert . equal ( token . mustVerify , sessionTokenData . mustVerify , 'mustVerify is set' )
357357 assert . deepEqual ( token . tokenVerificationId , sessionTokenData . tokenVerificationId , 'tokenVerificationId is set' )
358358 } )
359359 } )
@@ -403,7 +403,7 @@ module.exports = function (config, DB) {
403403 assert . deepEqual ( token . emailCode , accountData . emailCode , 'token emailCode same as account emailCode' )
404404 assert . equal ( token . verifierSetAt , accountData . verifierSetAt , 'verifierSetAt is correct' )
405405 assert . equal ( token . accountCreatedAt , accountData . createdAt , 'accountCreatedAt is correct' )
406- assert . equal ( ! ! token . mustVerify , ! ! sessionTokenData . mustVerify , 'mustVerify is correct' )
406+ assert . equal ( token . mustVerify , sessionTokenData . mustVerify , 'mustVerify is correct' )
407407 assert . deepEqual ( token . tokenVerificationId , sessionTokenData . tokenVerificationId , 'tokenVerificationId is correct' )
408408
409409 } )
@@ -418,7 +418,7 @@ module.exports = function (config, DB) {
418418 return db . sessionToken ( sessionTokenData . tokenId )
419419 } )
420420 . then ( ( token ) => {
421- assert . equal ( ! ! token . mustVerify , ! ! sessionTokenData . mustVerify , 'mustVerify is correct' )
421+ assert . equal ( token . mustVerify , sessionTokenData . mustVerify , 'mustVerify is correct' )
422422 assert . deepEqual ( token . tokenVerificationId , sessionTokenData . tokenVerificationId , 'tokenVerificationId is correct' )
423423 } )
424424 } )
@@ -432,7 +432,7 @@ module.exports = function (config, DB) {
432432 return db . sessionToken ( sessionTokenData . tokenId )
433433 } )
434434 . then ( ( token ) => {
435- assert . equal ( ! ! token . mustVerify , ! ! sessionTokenData . mustVerify , 'mustVerify is correct' )
435+ assert . equal ( token . mustVerify , sessionTokenData . mustVerify , 'mustVerify is correct' )
436436 assert . deepEqual ( token . tokenVerificationId , sessionTokenData . tokenVerificationId , 'tokenVerificationId is correct' )
437437 } )
438438 } )
@@ -443,7 +443,7 @@ module.exports = function (config, DB) {
443443 return db . sessionToken ( sessionTokenData . tokenId )
444444 } , assert . fail )
445445 . then ( ( token ) => {
446- assert . equal ( token . mustVerify , null , 'mustVerify is null' )
446+ assert . equal ( ! ! token . mustVerify , false , 'mustVerify is null' )
447447 assert . equal ( token . tokenVerificationId , null , 'tokenVerificationId is null' )
448448 } )
449449 } )
@@ -1761,7 +1761,7 @@ module.exports = function (config, DB) {
17611761 } )
17621762 . then ( ( session ) => {
17631763 // Returns verified session
1764- assert . equal ( session . mustVerify , null , 'mustVerify is not set ' )
1764+ assert . equal ( ! ! session . mustVerify , false , 'mustVerify is false ' )
17651765 assert . equal ( session . tokenVerificationId , null , 'tokenVerificationId is not set' )
17661766 assert . equal ( session . tokenVerificationCodeHash , null , 'tokenVerificationCodeHash is not set' )
17671767 assert . equal ( session . tokenVerificationCodeExpiresAt , null , 'tokenVerificationCodeExpiresAt is not set' )
@@ -1835,6 +1835,8 @@ module.exports = function (config, DB) {
18351835 . then ( ( token ) => {
18361836 assert . equal ( token . sharedSecret , sharedSecret , 'correct sharedSecret' )
18371837 assert . equal ( token . epoch , epoch , 'correct epoch' )
1838+ assert . equal ( token . verified , false , 'correct verified' )
1839+ assert . equal ( token . enabled , true , 'correct enabled' )
18381840 } )
18391841 } )
18401842
@@ -1862,6 +1864,83 @@ module.exports = function (config, DB) {
18621864 } )
18631865 } )
18641866 } )
1867+
1868+ it ( 'should update totp token' , ( ) => {
1869+ return db . updateTotpToken ( accountData . uid , { verified : true , enabled : true } )
1870+ . then ( ( result ) => {
1871+ assert . ok ( result )
1872+ return db . totpToken ( accountData . uid )
1873+ . then ( ( token ) => {
1874+ assert . equal ( token . sharedSecret , sharedSecret , 'correct sharedSecret' )
1875+ assert . equal ( token . epoch , epoch , 'correct epoch' )
1876+ assert . equal ( token . verified , true , 'correct verified' )
1877+ assert . equal ( token . enabled , true , 'correct enable' )
1878+ } )
1879+ } )
1880+ } )
1881+
1882+ it ( 'should fail to update unknown totp token' , ( ) => {
1883+ return db . updateTotpToken ( newUuid ( ) , { verified : true , enabled : true } )
1884+ . then ( assert . fail , ( err ) => {
1885+ assert . equal ( err . errno , 116 , 'correct errno, not found' )
1886+ } )
1887+ } )
1888+ } )
1889+
1890+ describe ( 'db.verifyTokensWithMethod' , ( ) => {
1891+ let account , sessionToken , tokenId
1892+ before ( ( ) => {
1893+ account = createAccount ( )
1894+ account . emailVerified = true
1895+ tokenId = hex32 ( )
1896+ sessionToken = makeMockSessionToken ( account . uid , false )
1897+ return db . createAccount ( account . uid , account )
1898+ . then ( ( ) => db . createSessionToken ( tokenId , sessionToken ) )
1899+ . then ( ( ) => db . sessionToken ( tokenId ) )
1900+ . then ( ( session ) => {
1901+ // Returns unverified session
1902+ assert . equal ( session . tokenVerificationId . toString ( 'hex' ) , sessionToken . tokenVerificationId . toString ( 'hex' ) , 'tokenVerificationId must match sessionToken' )
1903+ assert . equal ( session . verificationMethod , undefined , 'verificationMethod not set' )
1904+ } )
1905+ } )
1906+
1907+ it ( 'should fail to verify with unknown sessionId' , ( ) => {
1908+ const verifyOptions = {
1909+ verificationMethod : 'totp-2fa'
1910+ }
1911+ return db . verifyTokensWithMethod ( hex32 ( ) , verifyOptions )
1912+ . then ( assert . fail , ( err ) => {
1913+ assert . equal ( err . errno , 116 , 'correct errno, not found' )
1914+ } )
1915+ } )
1916+
1917+ it ( 'should fail to verify unknown verification method' , ( ) => {
1918+ const verifyOptions = {
1919+ verificationMethod : 'super-invalid-method'
1920+ }
1921+ return db . verifyTokensWithMethod ( tokenId , verifyOptions )
1922+ . then ( assert . fail , ( err ) => {
1923+ assert . equal ( err . errno , 138 , 'correct errno, invalid verification method' )
1924+ } )
1925+ } )
1926+
1927+ it ( 'should verify with verification method' , ( ) => {
1928+ const verifyOptions = {
1929+ verificationMethod : 'totp-2fa'
1930+ }
1931+ return db . verifyTokensWithMethod ( tokenId , verifyOptions )
1932+ . then ( ( res ) => {
1933+ assert . ok ( res )
1934+
1935+ // Ensure session really has been verified and correct methods set
1936+ return db . sessionToken ( tokenId )
1937+ } )
1938+ . then ( ( session ) => {
1939+ assert . equal ( session . tokenVerificationId , undefined , 'tokenVerificationId must be undefined' )
1940+ assert . equal ( session . verificationMethod , 2 , 'verificationMethod set' )
1941+ assert . ok ( session . verifiedAt , 'verifiedAt set' )
1942+ } )
1943+ } )
18651944 } )
18661945
18671946 after ( ( ) => db . close ( ) )
0 commit comments