Контроллер ActiveWeb: тестирование наличия значений заголовков
Я пытался проверить наличие Authorization
значение в заголовке запроса и мой AuthorizationFilter
никогда не был поражен:
@Test
public void shouldContainAuthorizationHeader() {
request().params("invoiceNumber","988665646546457").get("findByInvoiceNumber");
a(statusCode()).shouldBeEqual(403);
}
Вот объявление фильтра:
public class AppControllerConfig extends AbstractControllerConfig {
public void init(AppContext context) {
add(new DBConnectionFilter(), new CatchAllFilter()).to(AuthorsController.class, InterventionsController.class);
add(new AuthorizationFilter()).to(InterventionsController.class);
}
}
Вот его реализация:
public class AuthorizationFilter extends HttpSupportFilter {
private final static String EMPTY_STRING_SEPARATOR = " ";
@Override
public void before() {
if (!controllerProtected()) {
return;// allow to fall to controller
}
if (!hasAuthorizationHeader() && controllerProtected()) {
render("/errors/message", map("message", "Access denied", "code", 403));
}
}
Protected
Интерфейс такой же, как в примере activeweb-secure.
InterventionsController
помечен @Protected
:
@Protected
public class InterventionsController extends APIController {
...
}
Я попытался расширить свой тестовый класс из AppIntegrationSpec:
public class InterventionsControllerIntegrationTest extends AppIntegrationSpec {
...
}
но в этом случае request
метод больше не доступен.
Это нормальное поведение? Если да, то как проверить разные значения заголовков? Я использую последние2.3-SNAPSHOT
версия activeweb.
Спасибо.