Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Laravel中的PHPUnit进行google authenticator条形码扫描的单元测试存根_Laravel_Unit Testing_Phpunit_Google Authenticator - Fatal编程技术网

使用Laravel中的PHPUnit进行google authenticator条形码扫描的单元测试存根

使用Laravel中的PHPUnit进行google authenticator条形码扫描的单元测试存根,laravel,unit-testing,phpunit,google-authenticator,Laravel,Unit Testing,Phpunit,Google Authenticator,请帮我找出解决办法 有人知道如何使用PHPUnit编写单元测试存根来扫描条形码吗? 供参考: 在我们的应用程序中,使用了双因素身份验证(google authenticator)。当用户在显示条形码的下一个屏幕中输入有效的用户名和密码时,我们使用移动设备上的google authenticator应用程序扫描该条形码,然后生成6位代码,我们在web应用程序中输入该代码,然后重定向到主页 如何在为登录编写单元测试存根时设置cookie 为您的2FA创建一个抽象 使Google Authentica

请帮我找出解决办法

  • 有人知道如何使用PHPUnit编写单元测试存根来扫描条形码吗? 供参考: 在我们的应用程序中,使用了双因素身份验证(google authenticator)。当用户在显示条形码的下一个屏幕中输入有效的用户名和密码时,我们使用移动设备上的google authenticator应用程序扫描该条形码,然后生成6位代码,我们在web应用程序中输入该代码,然后重定向到主页
  • 如何在为登录编写单元测试存根时设置cookie
  • 为您的2FA创建一个抽象
  • 使Google Authenticator成为默认实现
  • 创建一个符合您需要的假实现。这可能是一个始终有效的固定六位数代码,也可能是您使其可配置的代码
  • 在测试中,将默认实现与假实现交换
  • 测试登录过程中需要测试的场景
  • 创建一个手动测试,以确保您的Google Authenticator实现实际工作
  • 我知道这个答案相当抽象,但你的问题也不是很具体。如果您能提供更多详细信息,我很乐意进行讨论。

    第2点: 在laravel中进行单元测试时,我能够使用请求设置cookie(json编码的数组)

    $cookie = ['cookiename' => \Crypt::encryptString(json_encode(array('cookieValue' => 1)))];
    
      $this->call('post', 'login', [
            'username' => user1,
            'password' => 'test',
            '_token' => csrf_token(),
            'remember'  => 'on',
        ], $cookie)
    

    在laravel应用程序中,登录使用双因素身份验证。使用Google authenticator时,我们无法编写用于扫描条形码和生成6位代码的单元测试用例。如果有人知道如何使用PHPUnit为googleauthenticator编写单元测试,这将非常有帮助。这就是我建议您为2FA创建一个可以存根或伪造的抽象的原因,因此它是可测试的。在自动测试中使用实际的Google验证器不是您想要做的事情。我甚至不知道这是否可行,但无论如何我不会搞砸它。与你的应用程序相关的唯一一件事就是用户提供了一个有效的代码。这段代码是来自Google Authenticator、硬件令牌还是sms代码并不重要。因此:用抽象来伪装它。这是您可以控制的解决方案。我没有理解您关于如何为google authenticator实现单元测试存根的观点。我的观点是:您不必这样做。如果您想验证您的应用程序是否正在根据第二个因素进行验证,那么您应该完全这样做。不管它是谷歌认证器还是其他任何东西。