Browse Source

Fix findOneAnd* usages

findOneAnd* now returns either a document or null rather than a result
set (unless the result set is requested explicitly). See
https://www.mongodb.com/blog/post/behavioral-changes-find-one-family-apis-node-js-driver-6-0-0.

GitOrigin-RevId: 93dc64cbcc663217f914cf9e9821e2b9642154db
andrew rumble 2 years ago
parent
commit
5f699ac5ef

+ 2 - 5
services/web/app/src/Features/Security/OneTimeTokenHandler.js

@@ -7,7 +7,7 @@ const { callbackify } = require('util')
 const ONE_HOUR_IN_S = 60 * 60
 
 async function peekValueFromToken(use, token) {
-  const result = await db.tokens.findOneAndUpdate(
+  const tokenDoc = await db.tokens.findOneAndUpdate(
     {
       use,
       token,
@@ -22,8 +22,6 @@ async function peekValueFromToken(use, token) {
       returnDocument: 'after',
     }
   )
-
-  const tokenDoc = result.value
   if (!tokenDoc) {
     throw new Errors.NotFoundError('no token found')
   }
@@ -82,11 +80,10 @@ const OneTimeTokenHandler = {
           usedAt: now,
         },
       },
-      function (error, result) {
+      function (error, token) {
         if (error) {
           return callback(error)
         }
-        const token = result.value
         if (!token) {
           return callback(new Errors.NotFoundError('no token found'))
         }

+ 4 - 6
services/web/test/unit/src/Security/OneTimeTokenHandlerTests.js

@@ -97,7 +97,7 @@ describe('OneTimeTokenHandler', function () {
       beforeEach(async function () {
         this.db.tokens.findOneAndUpdate = sinon
           .stub()
-          .resolves({ value: { data, peekCount: 1 } })
+          .resolves({ data, peekCount: 1 })
         result = await this.OneTimeTokenHandler.promises.peekValueFromToken(
           'password',
           'mock-token'
@@ -128,7 +128,7 @@ describe('OneTimeTokenHandler', function () {
 
     describe('when a valid token is not found', function () {
       beforeEach(function () {
-        this.db.tokens.findOneAndUpdate = sinon.stub().resolves({ value: null })
+        this.db.tokens.findOneAndUpdate = sinon.stub().resolves(null)
       })
 
       it('should return a NotFoundError', async function () {
@@ -175,7 +175,7 @@ describe('OneTimeTokenHandler', function () {
       beforeEach(function () {
         this.db.tokens.findOneAndUpdate = sinon
           .stub()
-          .yields(null, { value: { data: 'mock-data' } })
+          .yields(null, { data: 'mock-data' })
         this.OneTimeTokenHandler.getValueFromTokenAndExpire(
           'password',
           'mock-token',
@@ -207,9 +207,7 @@ describe('OneTimeTokenHandler', function () {
 
     describe('when a valid token is not found', function () {
       beforeEach(function () {
-        this.db.tokens.findOneAndUpdate = sinon
-          .stub()
-          .yields(null, { value: null })
+        this.db.tokens.findOneAndUpdate = sinon.stub().yields(null, null)
         this.OneTimeTokenHandler.getValueFromTokenAndExpire(
           'password',
           'mock-token',