端到端测试期间绕过护照认证

时间:2018-09-11 19:18:37

标签: authentication testing passport.js puppeteer gui-testing

我目前正在测试公司内部的应用程序(react-redux-express),并希望使用Puppeteer进行一些UI测试(其余测试是通过Jest和Enzyme构建的)。当我启动Puppeteer页面时,该会话未登录,并通过我们的password.js中间件重定向到Google登录页面。但是,我的问题是,有时我们公司特定的google登录需要2要素身份验证,因此会阻止任何有意义的UI测试访问实际应用程序。因此,我的问题是,是否有一种方法可以使用护照中间件来免除仅用于测试的身份验证,如果是,这是明智之举还是会导致安全问题?

1 个答案:

答案 0 :(得分:0)

我们当前的选择方法是拥有一个中间件,该中间件只是对Passport使用的用户进行补丁。

const mockMiddleware = (req, _, next) => {
  req.user = {
    firstName: "John",
    lastName: "Doe",
    ...
  };
  req.isAuthenticated = () => true;
  next();
};

然后我们可以有条件地在定义我们所有护照/会话中间件的之后包括在内:

if(shouldMockAuthentication){
    app.use(mockMiddleware)
}

作为额外的安全步骤,您可能只想模拟生产过程中某些不正确的事情(例如在localhost上运行),以便绝对不会在生产中发生。