2

假设应用程序受 OpenId 登录(并且只有 OpenId)保护。一旦用户通过 OpenId 成功通过身份验证,我在会话中设置一个属性,如下所示:

 Redirect(routes.Application.index).withSession('email -> userinfo.email)

现在,由于许多应用程序功能依赖于 Javascript,因此测试必须在 Selenium/Fluentlenium 上运行。如何在测试中伪造已连接的用户?

编辑:如下面的回答,在 OpenId 提供者中创建用户并不是真正的答案,原因有两个:

  1. OpenID 提供者是 Google 和仅限 Google。
  2. 我不想测试 Google 的 OpenId 是否正常工作,因为他们可能测试得比我以前更好,我想测试我的应用程序的功能。

我宁愿通过在fluentlenium的会话中手动设置电子邮件属性来伪造连接的用户,但我发现没有API可以做到这一点。

4

3 回答 3

1

我们通过将 OpenId 集成提取到具有真实实现(google)和虚拟实现的特征中来做到这一点,在我们的例子中,使用硬编码的用户登录,这对于能够使用应用程序也很有用在开发模式下,无需实际登录。

实际的特征就像这样简单:

sealed trait AuthLogic {
  def login: Action[AnyContent]
  def callback: Action[AnyContent]
}

然后由 google one 和 dummy 实现,实际使用的实例由配置标志在第一次访问(惰性验证)时决定。假人所做的就是直接从登录重定向到回调,然后在回调实现中伪造登录。

希望这有帮助!

于 2013-10-14T18:07:59.620 回答
0

为什么不在 OpenId 供应商中创建测试帐户并在硒脚本中使用其用户名/密码?

在 selenium/Fluentlenium 中进行的测试得出结论,您的应用程序非常集成(如您提到的那样设置了 OpenID,我怀疑 DB 也已连接)。

于 2013-10-09T14:43:32.183 回答
0

我从未使用过 fluentlenium,但我假设您可以访问底层的 selenium webdriver?如果是这样,你不能只设置一个cookie吗?您只需要保存一个有效的签名会话 cookie。

http://docs.seleniumhq.org/docs/03_webdriver.jsp#cookies

于 2013-10-20T01:37:49.223 回答