ActiveWeb控制器:测试标头值的存在

时间:2018-09-26 09:32:55

标签: 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。

谢谢。

0 个答案:

没有答案