【问题标题】:What is the best way to test Multi-Factor Authentication using Cypress?使用赛普拉斯测试多重身份验证的最佳方法是什么?
【发布时间】:2022-10-24 06:30:45
【问题描述】:

如果用户启用了 MFA,我正在测试的应用程序将发送 OTP。我需要为该功能创建 E2E 测试。我可以使用什么工具在我的 cypress 测试中读取传入消息并在登录时输入 OTP?

我知道有一项付费服务​​ Mailosaur 允许这样做,但我正在寻找便宜/免费的解决方案。

【问题讨论】:

  • 我们有一个电话验证功能,可以阻止用户在我们的应用程序中使用某些功能。在我们的开发环境中,我们有一个电话号码和 4 位代码,允许我们使用真实号码绕过。这是你可以要求你的开发团队做的事情吗?

标签: javascript node.js cypress sms-gateway multi-factor-authentication


【解决方案1】:

如果您将otplib 添加到您的项目中,您可以完全避开电子邮件包。

otplib 是一个用于 OTP 生成和验证的 JavaScript 一次性密码 (OTP) 库。

它实现了 HOTP - RFC 4226 和 TOTP - RFC 6238,并针对各自的 RFC 规范中提供的测试向量进行了测试。这些数据集可以在测试/数据文件夹中找到。

  • RFC 4226 数据集
  • RFC 6238 数据集

该库还与 Google Authenticator 兼容,并包含允许您使用 Google Authenticator 的其他方法。

cypress.config.js 添加一个任务,然后调用cy.task('getOTPToken', secret) 并在您的应用程序中使用返回的令牌(而不是通过电子邮件发送的令牌)。

const { defineConfig } = require('cypress');
const otplib = require('otplib');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        getOTPToken(secret) {
          return otplib.authenticator.generate(secret);
        }
      })
    },
  },
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2022-01-03
    • 1970-01-01
    • 2019-02-27
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多