Search in sources :

Example 11 with RequestFilter

use of com.yahoo.jdisc.http.filter.RequestFilter in project vespa by vespa-engine.

the class JDiscFilterInvokerFilter method runRequestFilterWithMatchingBinding.

private HttpServletRequest runRequestFilterWithMatchingBinding(AtomicReference<Boolean> responseReturned, URI uri, HttpServletRequest request, HttpServletResponse response) throws IOException {
    try {
        RequestFilter requestFilter = jDiscContext.requestFilters.resolve(uri);
        if (requestFilter == null)
            return request;
        ResponseHandler responseHandler = createResponseHandler(responseReturned, request, response);
        return filterInvoker.invokeRequestFilterChain(requestFilter, uri, request, responseHandler);
    } catch (Exception e) {
        throw new RuntimeException("Failed running request filter chain for uri " + uri, e);
    }
}
Also used : ResponseHandler(com.yahoo.jdisc.handler.ResponseHandler) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) ServletException(javax.servlet.ServletException) IOException(java.io.IOException)

Example 12 with RequestFilter

use of com.yahoo.jdisc.http.filter.RequestFilter in project vespa by vespa-engine.

the class FilterTestCase method requireThatRequestFilterChangesAreSeenByRequestHandler.

@Test
public void requireThatRequestFilterChangesAreSeenByRequestHandler() throws Exception {
    final RequestFilter filter = new HeaderRequestFilter("foo", "bar");
    final BindingRepository<RequestFilter> requestFilters = new BindingRepository<>();
    requestFilters.bind("http://*/*", filter);
    final BindingRepository<ResponseFilter> responseFilters = null;
    final MyRequestHandler requestHandler = new MyRequestHandler();
    final TestDriver testDriver = newDriver(requestHandler, requestFilters, responseFilters);
    testDriver.client().get("status.html");
    assertThat(requestHandler.awaitInvocation(), is(true));
    assertThat(requestHandler.getHeaderMap().get("foo").get(0), is("bar"));
    assertThat(testDriver.close(), is(true));
}
Also used : BindingRepository(com.yahoo.jdisc.application.BindingRepository) ResponseFilter(com.yahoo.jdisc.http.filter.ResponseFilter) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) Test(org.testng.annotations.Test)

Example 13 with RequestFilter

use of com.yahoo.jdisc.http.filter.RequestFilter in project vespa by vespa-engine.

the class FilterTestCase method requireThatResponseFilterIsNotRunOnUnboundPath.

@Test
public void requireThatResponseFilterIsNotRunOnUnboundPath() throws Exception {
    final ResponseFilter filter = mock(ResponseFilterMockBase.class);
    final BindingRepository<RequestFilter> requestFilters = null;
    final BindingRepository<ResponseFilter> responseFilters = new BindingRepository<>();
    responseFilters.bind("http://*/filtered/*", filter);
    final MyRequestHandler requestHandler = new MyRequestHandler();
    final TestDriver testDriver = newDriver(requestHandler, requestFilters, responseFilters);
    testDriver.client().get("/status.html");
    assertThat(requestHandler.awaitInvocation(), is(true));
    verify(filter, never()).filter(any(Response.class), any(Request.class));
    assertThat(testDriver.close(), is(true));
}
Also used : HttpResponse(com.yahoo.jdisc.http.HttpResponse) Response(com.yahoo.jdisc.Response) BindingRepository(com.yahoo.jdisc.application.BindingRepository) ResponseFilter(com.yahoo.jdisc.http.filter.ResponseFilter) HttpRequest(com.yahoo.jdisc.http.HttpRequest) Request(com.yahoo.jdisc.Request) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) Test(org.testng.annotations.Test)

Example 14 with RequestFilter

use of com.yahoo.jdisc.http.filter.RequestFilter in project vespa by vespa-engine.

the class FilterTestCase method requireThatRequestFilterIsNotRunOnUnboundPath.

@Test
public void requireThatRequestFilterIsNotRunOnUnboundPath() throws Exception {
    final RequestFilter filter = mock(RequestFilterMockBase.class);
    final BindingRepository<RequestFilter> requestFilters = new BindingRepository<>();
    requestFilters.bind("http://*/filtered/*", filter);
    final BindingRepository<ResponseFilter> responseFilters = null;
    final MyRequestHandler requestHandler = new MyRequestHandler();
    final TestDriver testDriver = newDriver(requestHandler, requestFilters, responseFilters);
    testDriver.client().get("/status.html");
    assertThat(requestHandler.awaitInvocation(), is(true));
    verify(filter, never()).filter(any(HttpRequest.class), any(ResponseHandler.class));
    assertThat(testDriver.close(), is(true));
}
Also used : HttpRequest(com.yahoo.jdisc.http.HttpRequest) ResponseHandler(com.yahoo.jdisc.handler.ResponseHandler) BindingRepository(com.yahoo.jdisc.application.BindingRepository) ResponseFilter(com.yahoo.jdisc.http.filter.ResponseFilter) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) Test(org.testng.annotations.Test)

Example 15 with RequestFilter

use of com.yahoo.jdisc.http.filter.RequestFilter in project vespa by vespa-engine.

the class FilterTestCase method requireThatRequestFilterChainIsRun.

@Test
public void requireThatRequestFilterChainIsRun() throws Exception {
    final RequestFilter requestFilter1 = mock(RequestFilter.class);
    final RequestFilter requestFilter2 = mock(RequestFilter.class);
    final RequestFilter requestFilterChain = RequestFilterChain.newInstance(requestFilter1, requestFilter2);
    final HttpRequest request = null;
    final ResponseHandler responseHandler = null;
    requestFilterChain.filter(request, responseHandler);
    verify(requestFilter1).filter(any(HttpRequest.class), any(ResponseHandler.class));
    verify(requestFilter2).filter(any(HttpRequest.class), any(ResponseHandler.class));
}
Also used : HttpRequest(com.yahoo.jdisc.http.HttpRequest) ResponseHandler(com.yahoo.jdisc.handler.ResponseHandler) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) Test(org.testng.annotations.Test)

Aggregations

RequestFilter (com.yahoo.jdisc.http.filter.RequestFilter)16 Test (org.testng.annotations.Test)11 ResponseHandler (com.yahoo.jdisc.handler.ResponseHandler)10 HttpRequest (com.yahoo.jdisc.http.HttpRequest)10 ResponseFilter (com.yahoo.jdisc.http.filter.ResponseFilter)10 BindingRepository (com.yahoo.jdisc.application.BindingRepository)6 Response (com.yahoo.jdisc.Response)5 HttpResponse (com.yahoo.jdisc.http.HttpResponse)5 Request (com.yahoo.jdisc.Request)3 ComponentId (com.yahoo.component.ComponentId)2 ComponentRegistry (com.yahoo.component.provider.ComponentRegistry)2 ChainsConfig (com.yahoo.container.core.ChainsConfig)2 FilterChainRepository (com.yahoo.container.http.filter.FilterChainRepository)2 ContentChannel (com.yahoo.jdisc.handler.ContentChannel)2 ServerConfig (com.yahoo.jdisc.http.ServerConfig)2 SecurityRequestFilter (com.yahoo.jdisc.http.filter.SecurityRequestFilter)2 SecurityResponseFilter (com.yahoo.jdisc.http.filter.SecurityResponseFilter)2 FilterBindings (com.yahoo.jdisc.http.server.FilterBindings)2 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)2 Test (org.junit.Test)2