Контроллер ActiveWeb: тестирование наличия значений заголовков - PullRequest
0 голосов
/ 26 сентября 2018

Я пытался проверить наличие значения 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.

Спасибо.

...