【发布时间】:2014-08-26 21:23:49
【问题描述】:
我们在 Play 2.3.x 应用程序中使用 securesocial 模块进行身份验证。
我想对我的应用程序中需要安全社交身份验证的控制器进行单元测试。测试套件不适用于最新版本。
任何人都可以为我提供一个解决方案,使用安全社交身份验证向控制器中的所有方法发送虚假的身份验证请求吗?
下面给出的是我们应用程序控制器中的一种方法:
def list = SecuredAction.async { implicit request =>
val params = request.asInstanceOf[RequestHeader]
val future = DeviceDAO.listAll(params)
future.map(list => {
Ok(ResponseBuilder.getResponseJson(params, Json.toJson(list.devices), list.totalItems))
})
}
目前我们正在通过在我们的请求标头中附加 authtoken 来对我们的控制器进行单元测试,如下所示:
"list is empty " in new WithApplication {
val req = FakeRequest(GET ,"/v1/devices").withHeaders(
"X-Auth-Token" -> authToken,
"Content-Type" -> authcontentType
)
val home = route(req).get
status(home) must equalTo(OK)
var items = contentAsJson(home) \ "items"
items.as[JsArray].value.length must equalTo(0)
}
由于这不是测试身份验证的理想方法,我们希望使用对控制器的正确假身份验证请求进行测试。旧版本的安全社交提供了一个测试套件,可用作:
"Access secured index " in new WithLoggedUser(minimalApp) {
val req: Request[AnyContent] = FakeRequest().
withHeaders((HeaderNames.CONTENT_TYPE, "application/x-www-form-urlencoded")).
withCookies(cookie) // Fake cookie from the WithloggedUser trait
val result = Application.index.apply(req)
val actual: Int= status(result)
actual must be equalTo OK
}
但这不适用于 Play 2.3.x 应用程序。 那么有人可以告诉我如何以上述方式为Play 2.3.x applcaition编写最新版本的securesocial身份验证的单元测试用例
【问题讨论】:
标签: playframework-2.3 securesocial