use of com.yahoo.jdisc.http.filter.ResponseFilter in project vespa by vespa-engine.
the class JDiscFilterForServletTest method bindings.
private Module bindings(BindingRepository<RequestFilter> requestFilters, BindingRepository<ResponseFilter> responseFilters) {
return Modules.combine(new AbstractModule() {
@Override
protected void configure() {
bind(FilterBindings.class).toInstance(new FilterBindings(requestFilters, responseFilters));
bind(FilterInvoker.class).toInstance(new FilterInvoker() {
@Override
public HttpServletRequest invokeRequestFilterChain(RequestFilter requestFilter, URI uri, HttpServletRequest httpRequest, ResponseHandler responseHandler) {
TestRequestFilter filter = (TestRequestFilter) requestFilter;
filter.runAsSecurityFilter(httpRequest, responseHandler);
return httpRequest;
}
@Override
public void invokeResponseFilterChain(ResponseFilter responseFilter, URI uri, HttpServletRequest request, HttpServletResponse response) {
TestResponseFilter filter = (TestResponseFilter) responseFilter;
filter.runAsSecurityFilter(request, response);
}
});
}
}, guiceModule());
}
use of com.yahoo.jdisc.http.filter.ResponseFilter in project vespa by vespa-engine.
the class FilterTestCase method requireThatResponseFilterIsRunOnBoundPath.
@Test
public void requireThatResponseFilterIsRunOnBoundPath() 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("/filtered/status.html");
assertThat(requestHandler.awaitInvocation(), is(true));
verify(filter, times(1)).filter(any(Response.class), any(Request.class));
assertThat(testDriver.close(), is(true));
}
use of com.yahoo.jdisc.http.filter.ResponseFilter in project vespa by vespa-engine.
the class FilterTestCase method requireThatRequestFilterIsRunOnBoundPath.
@Test
public void requireThatRequestFilterIsRunOnBoundPath() 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("/filtered/status.html");
assertThat(requestHandler.awaitInvocation(), is(true));
verify(filter, times(1)).filter(any(HttpRequest.class), any(ResponseHandler.class));
assertThat(testDriver.close(), is(true));
}
use of com.yahoo.jdisc.http.filter.ResponseFilter in project vespa by vespa-engine.
the class FilterTestCase method requireThatRequestFilterAndResponseFilterCanBindToSamePath.
@Test
public void requireThatRequestFilterAndResponseFilterCanBindToSamePath() throws Exception {
final String uriPattern = "http://*/*";
final BindingRepository<RequestFilter> requestFilters = new BindingRepository<>();
final RequestFilter requestFilter = mock(RequestFilterMockBase.class);
requestFilters.bind(uriPattern, requestFilter);
final BindingRepository<ResponseFilter> responseFilters = new BindingRepository<>();
final ResponseFilter responseFilter = mock(ResponseFilterMockBase.class);
responseFilters.bind(uriPattern, responseFilter);
final MyRequestHandler requestHandler = new MyRequestHandler();
final TestDriver testDriver = newDriver(requestHandler, requestFilters, responseFilters);
testDriver.client().get("/status.html");
assertThat(requestHandler.awaitInvocation(), is(true));
verify(requestFilter, times(1)).filter(any(HttpRequest.class), any(ResponseHandler.class));
verify(responseFilter, times(1)).filter(any(Response.class), any(Request.class));
assertThat(testDriver.close(), is(true));
}
use of com.yahoo.jdisc.http.filter.ResponseFilter in project vespa by vespa-engine.
the class FilterTestCase method requireThatResponseFilterChainRetainsFilters.
@Test
public void requireThatResponseFilterChainRetainsFilters() {
final ResponseFilter responseFilter1 = mock(ResponseFilter.class);
final ResponseFilter responseFilter2 = mock(ResponseFilter.class);
verify(responseFilter1, never()).refer();
verify(responseFilter2, never()).refer();
final ResourceReference reference1 = mock(ResourceReference.class);
final ResourceReference reference2 = mock(ResourceReference.class);
when(responseFilter1.refer()).thenReturn(reference1);
when(responseFilter2.refer()).thenReturn(reference2);
final ResponseFilter chain = ResponseFilterChain.newInstance(responseFilter1, responseFilter2);
verify(responseFilter1, times(1)).refer();
verify(responseFilter2, times(1)).refer();
verify(reference1, never()).close();
verify(reference2, never()).close();
chain.release();
verify(reference1, times(1)).close();
verify(reference2, times(1)).close();
}
Aggregations