У меня есть контроллер, написанный на Scala, который использует аутентификационный признак. Черта имеет isAuthenticated метод, как показано ниже:FakeApplication не содержит тело
def isAuthenticated(f: => AccountDTO => Request[AnyContent] => Result) =
Security.Authenticated(username, onUnauthorized) { user =>
Action.async {
request => {
Future.successful(f(user)(request))
}
}
}
В контроллере, мой метод использует метод признака, чтобы проверить, если пользователь прошел проверку подлинности или не до делать реальную работу:
def createFileMetadata() = isAuthenticated { user => implicit request =>
{
....
}
Когда выполняя запрос POST (от Postman или UI), все работает так, как предполагалось, однако я испытываю серьезные проблемы при попытке модульных тестов.
Юнит-тесты являются следующими:
val goodRequest = FakeRequest(POST, url).withJsonBody([a JsObject]).withHeaders((HeaderNames.AUTHORIZATION, "someMockToken"))
Теперь, если в моем контроллере я использую request.body.asJson
я получаю None
. Более того, если у меня есть (HeaderNames.CONTENT_TYPE, "application/json")
, я получаю 400 (Bad Request) без ввода метода контроллера.
Я также пробовал использовать withBody()
вместо withJsonBody()
, но с тем же результатом. Отчаянно я даже пытался построить запрос с использованием реализации Java RequestBuidler()
, но с точно такими же результатами.
Опять же, делая запрос, когда приложение работает, работает, только модульные тесты имеют проблемы. Используя debug, я увидел что-то странное, и это может быть проблемой. Как видно на изображении ниже, при выполнении модульного теста, «тело» в запросе пуст, однако тело в rh $ 1 существует и по мере того, как я его установил. При подаче заявки от Postman в приложение «тело» существует со значением, отправленным.