Мы используем безопасный модуль для аутентификации в нашем приложении Play 2.3.x.
Я хотел бы провести модульное тестирование контроллеров в моем приложении, которым требуется безопасная социальная аутентификация. Набор тестов недоступен для последней версии.
Может ли кто-нибудь предоставить мне решение для отправки поддельного аутентифицированного запроса всем методам в контроллерах с использованием безопасной социальной аутентификации?
Ниже приведен один из методов в контроллере нашего приложения:
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.