2016-11-25 13 views
0

У меня есть контроллер, который защищен признаком аутентификации. Черта выглядит следующим образом:FakeRequest отбрасывается в RequestHeader

def isAuthenticated(f: => AccountDTO => Request[AnyContent] => Result) = 
    Security.Authenticated(username, onUnauthorized) { user => 
     Action.async { 
     request => { 
      Future.successful(f(user)(request)) 
     } 
     } 
    } 

Все работает хорошо, когда делает обычный запрос, но при выполнении модульных тестов я сталкивалась с проблемами. Я создаю следующий поддельный запрос:

val goodRequest = FakeRequest("POST", "/platform/api/v1/files") 
.withBody(Json.toJson(ScalaMockingUtil.fileValidMetadataJson)) 
     .withHeaders((HeaderNames.AUTHORIZATION, "4322tertf2643t34t34")) 

Далее, я получаю свой объект контроллера и вызова метода, применяя который FakeRequest:

val result: Iteratee[Array[Byte], Result] = filesController.createFileMetadata()(goodRequest) 

проблема, с которой я столкнулся в том, что где-то вдоль линии FakeReuqest сбрасывается в RequestHeader. Проблема заключается в том, что описанная здесь: Unable to test controller using Action.async, где Action имеет два применяемых метода вместо одного. однако я, похоже, не могу заставить тот, который мне нужен.

Любая помощь приветствуется.

ответ

0

Решение (или обходной путь), чтобы использовать вызов() вместо того, чтобы применить():

val result = call(filesController.createFileMetadata(), goodRequest) 

Теперь все работает, как предполагалось.

 Смежные вопросы

  • Нет связанных вопросов^_^