假设该应用受OpenId登录(仅限OpenId)保护。一旦用户通过OpenId成功进行了身份验证,我就在会话中设置了一个属性:
Redirect(routes.Application.index).withSession('email -> userinfo.email)
现在,由于很多应用程序功能都依赖于Javascript,因此测试必须在Selenium / Fluentlenium上运行。如何在测试中伪造连接用户?
编辑:如下所述,在OpenId提供程序中创建用户实际上并不是一个有两个原因的答案:
我更愿意通过在fluentlenium中的会话中手动设置电子邮件属性来假冒连接用户,但我发现没有API可以执行此操作。
答案 0 :(得分:1)
我们已经通过将OpenId集成提取到具有真实实现(谷歌)和虚拟实现的特征中来完成此操作,在我们的情况下,使用已登录的硬编码用户,这也是有用的在开发模式下使用应用程序而无需实际登录。
实际特征就像这样简单:
sealed trait AuthLogic {
def login: Action[AnyContent]
def callback: Action[AnyContent]
}
然后由google one和dummy实现,所使用的实际实例是在配置标志首次访问(lazy val)时决定的。所有虚拟的都是直接从登录重定向到回调,然后在回调实现中伪造一个登录。
希望这有帮助!
答案 1 :(得分:0)
为什么不在OpenId供应商中创建测试帐户并在selenium脚本中使用其用户名/密码?
在selenium / Fluentlenium中进行的测试得出的结论是,您的应用程序已经完全集成(OpenID是按照您的提法设置的,我怀疑DB也是连接的。)
答案 2 :(得分:0)
我从未使用过fluent,但我认为您可以访问底层的selenium webdriver?如果是这样,你不能只设置一个cookie吗?您只需要保存一个有效的签名会话cookie。