add updateOTPKey wrapper to authenticator
authorJustin Wind <justin.wind+git@gmail.com>
Fri, 10 May 2024 21:23:34 +0000 (14:23 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Fri, 10 May 2024 21:23:34 +0000 (14:23 -0700)
lib/authenticator.js
test/lib/authenticator.js

index 36c1574b507c223fe380a35ab6f0eb991de085e4..dc56e9e0180d161310b724d28775c1782e157a73 100644 (file)
@@ -319,6 +319,23 @@ class Authenticator {
   }
 
 
+  /**
+   * Update the authentication database with a new otp key.
+   * @param {*} dbCtx db context
+   * @param {string} identifier identifier
+   * @param {string=} otpKey otp key
+   */
+  async updateOTPKey(dbCtx, identifier, otpKey) {
+    const _scope = _fileScope('updateOTPKey');
+    try {
+      await this.db.authenticationUpdateOTPKey(dbCtx, identifier, otpKey);
+      this.logger.info(_scope, 'otp key updated');
+    } catch (e) {
+      this.logger.error(_scope, 'failed', { error: e, identifier });
+    }
+  }
+
+
   /**
    * Check for valid Basic auth, updates ctx with identifier if valid.
    * @param {String} credentials
index 534fd02df14165d8029582ab6c3a816b24fbfe9a..341bc9bfb52d8bc16df7e3d7bab5ab9937a9b4ce 100644 (file)
@@ -383,6 +383,22 @@ describe('Authenticator', function () {
     });
   }); // checkOTP
 
+  describe('updateOTPKey', function () {
+    let dbCtx, otpKey;
+    beforeEach(function () {
+      dbCtx = {};
+      otpKey = 'CDBGB3U3B2ILECQORMINGGSZN7LXY565';
+    });
+    it('covers success', async function () {
+      await authenticator.updateOTPKey(dbCtx, identifier, otpKey);
+      assert(authenticator.db.authenticationUpdateOTPKey.called);
+    });
+    it('covers failure', async function () {
+      authenticator.db.authenticationUpdateOTPKey.rejects();
+      assert.rejects(authenticator.updateOTPKey(dbCtx, identifier, otpKey));
+    });
+  }); // updateOTPKey
+
   describe('sessionCheck', function () {
     let req, res, loginPath, required, profilesAllowed;
     beforeEach(function () {