Search in sources :

Example 1 with FilterBindings

use of com.yahoo.jdisc.http.server.FilterBindings 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());
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) ResponseHandler(com.yahoo.jdisc.handler.ResponseHandler) FilterInvoker(com.yahoo.jdisc.http.server.jetty.FilterInvoker) ResponseFilter(com.yahoo.jdisc.http.filter.ResponseFilter) HttpServletResponse(javax.servlet.http.HttpServletResponse) FilterBindings(com.yahoo.jdisc.http.server.FilterBindings) URI(java.net.URI) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) AbstractModule(com.google.inject.AbstractModule)

Example 2 with FilterBindings

use of com.yahoo.jdisc.http.server.FilterBindings in project vespa by vespa-engine.

the class FilterBindingsProviderTest method requireThatCorrectlyConfiguredFiltersAreIncluded.

@Test
public void requireThatCorrectlyConfiguredFiltersAreIncluded() {
    final String requestFilter1Id = "requestFilter1";
    final String requestFilter2Id = "requestFilter2";
    final String requestFilter3Id = "requestFilter3";
    final String responseFilter1Id = "responseFilter1";
    final String responseFilter2Id = "responseFilter2";
    final String responseFilter3Id = "responseFilter3";
    // Set up config.
    configBuilder.filter(new ServerConfig.Filter.Builder().id(requestFilter1Id).binding("http://*/a"));
    configBuilder.filter(new ServerConfig.Filter.Builder().id(requestFilter2Id).binding("http://*/b"));
    configBuilder.filter(new ServerConfig.Filter.Builder().id(responseFilter1Id).binding("http://*/c"));
    configBuilder.filter(new ServerConfig.Filter.Builder().id(responseFilter3Id).binding("http://*/d"));
    // Set up registry.
    final ComponentRegistry<RequestFilter> availableRequestFilters = new ComponentRegistry<>();
    final RequestFilter requestFilter1Instance = mock(RequestFilter.class);
    final RequestFilter requestFilter2Instance = mock(RequestFilter.class);
    final RequestFilter requestFilter3Instance = mock(RequestFilter.class);
    availableRequestFilters.register(ComponentId.fromString(requestFilter1Id), requestFilter1Instance);
    availableRequestFilters.register(ComponentId.fromString(requestFilter2Id), requestFilter2Instance);
    availableRequestFilters.register(ComponentId.fromString(requestFilter3Id), requestFilter3Instance);
    final ComponentRegistry<ResponseFilter> availableResponseFilters = new ComponentRegistry<>();
    final ResponseFilter responseFilter1Instance = mock(ResponseFilter.class);
    final ResponseFilter responseFilter2Instance = mock(ResponseFilter.class);
    final ResponseFilter responseFilter3Instance = mock(ResponseFilter.class);
    availableResponseFilters.register(ComponentId.fromString(responseFilter1Id), responseFilter1Instance);
    availableResponseFilters.register(ComponentId.fromString(responseFilter2Id), responseFilter2Instance);
    availableResponseFilters.register(ComponentId.fromString(responseFilter3Id), responseFilter3Instance);
    final FilterChainRepository filterChainRepository = new FilterChainRepository(new ChainsConfig(new ChainsConfig.Builder()), availableRequestFilters, availableResponseFilters, new ComponentRegistry<SecurityRequestFilter>(), new ComponentRegistry<SecurityResponseFilter>());
    // Set up the provider that we aim to test.
    final FilterBindingsProvider provider = new FilterBindingsProvider(new ComponentId("foo"), new ServerConfig(configBuilder), filterChainRepository, new ComponentRegistry<SecurityRequestFilter>());
    // Execute.
    final FilterBindings filterBindings = provider.get();
    // Verify.
    assertThat(filterBindings, is(not(nullValue())));
    assertThat(filterBindings.getRequestFilters(), containsFilters(requestFilter1Instance, requestFilter2Instance));
    assertThat(filterBindings.getRequestFilters(), not(containsFilters(requestFilter3Instance)));
    assertThat(filterBindings.getResponseFilters(), containsFilters(responseFilter1Instance, responseFilter3Instance));
    assertThat(filterBindings.getResponseFilters(), not(containsFilters(responseFilter2Instance)));
}
Also used : SecurityResponseFilter(com.yahoo.jdisc.http.filter.SecurityResponseFilter) ChainsConfig(com.yahoo.container.core.ChainsConfig) FilterBindings(com.yahoo.jdisc.http.server.FilterBindings) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) ServerConfig(com.yahoo.jdisc.http.ServerConfig) SecurityRequestFilter(com.yahoo.jdisc.http.filter.SecurityRequestFilter) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) SecurityRequestFilter(com.yahoo.jdisc.http.filter.SecurityRequestFilter) ResponseFilter(com.yahoo.jdisc.http.filter.ResponseFilter) SecurityResponseFilter(com.yahoo.jdisc.http.filter.SecurityResponseFilter) ComponentRegistry(com.yahoo.component.provider.ComponentRegistry) ResponseFilter(com.yahoo.jdisc.http.filter.ResponseFilter) SecurityResponseFilter(com.yahoo.jdisc.http.filter.SecurityResponseFilter) FilterChainRepository(com.yahoo.container.http.filter.FilterChainRepository) ComponentId(com.yahoo.component.ComponentId) RequestFilter(com.yahoo.jdisc.http.filter.RequestFilter) SecurityRequestFilter(com.yahoo.jdisc.http.filter.SecurityRequestFilter) Test(org.junit.Test)

Example 3 with FilterBindings

use of com.yahoo.jdisc.http.server.FilterBindings in project vespa by vespa-engine.

the class FilterBindingsProviderTest method requireThatEmptyInputGivesEmptyOutput.

@Test
public void requireThatEmptyInputGivesEmptyOutput() {
    final FilterChainRepository filterChainRepository = new FilterChainRepository(new ChainsConfig(new ChainsConfig.Builder()), new ComponentRegistry<>(), new ComponentRegistry<>(), new ComponentRegistry<>(), new ComponentRegistry<>());
    final FilterBindingsProvider provider = new FilterBindingsProvider(new ComponentId("foo"), new ServerConfig(configBuilder), filterChainRepository, new ComponentRegistry<>());
    final FilterBindings filterBindings = provider.get();
    assertThat(filterBindings, is(not(nullValue())));
    assertThat(filterBindings.getRequestFilters().iterator().hasNext(), is(false));
    assertThat(filterBindings.getResponseFilters().iterator().hasNext(), is(false));
}
Also used : ServerConfig(com.yahoo.jdisc.http.ServerConfig) ChainsConfig(com.yahoo.container.core.ChainsConfig) FilterBindings(com.yahoo.jdisc.http.server.FilterBindings) FilterChainRepository(com.yahoo.container.http.filter.FilterChainRepository) ComponentId(com.yahoo.component.ComponentId) Test(org.junit.Test)

Aggregations

FilterBindings (com.yahoo.jdisc.http.server.FilterBindings)3 ComponentId (com.yahoo.component.ComponentId)2 ChainsConfig (com.yahoo.container.core.ChainsConfig)2 FilterChainRepository (com.yahoo.container.http.filter.FilterChainRepository)2 ServerConfig (com.yahoo.jdisc.http.ServerConfig)2 RequestFilter (com.yahoo.jdisc.http.filter.RequestFilter)2 ResponseFilter (com.yahoo.jdisc.http.filter.ResponseFilter)2 Test (org.junit.Test)2 AbstractModule (com.google.inject.AbstractModule)1 ComponentRegistry (com.yahoo.component.provider.ComponentRegistry)1 ResponseHandler (com.yahoo.jdisc.handler.ResponseHandler)1 SecurityRequestFilter (com.yahoo.jdisc.http.filter.SecurityRequestFilter)1 SecurityResponseFilter (com.yahoo.jdisc.http.filter.SecurityResponseFilter)1 FilterInvoker (com.yahoo.jdisc.http.server.jetty.FilterInvoker)1 URI (java.net.URI)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 HttpServletResponse (javax.servlet.http.HttpServletResponse)1 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)1