Search in sources :

Example 71 with SlingHttpServletRequest

use of org.apache.sling.api.SlingHttpServletRequest in project sling by apache.

the class ContentDispositionFilterTest method test_doFilter17.

@Test
public void test_doFilter17() throws Throwable {
    final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class);
    final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class);
    final Resource resource = context.mock(Resource.class, "resource");
    final ValueMap properties = context.mock(ValueMap.class);
    contentDispositionFilter = new ContentDispositionFilter();
    callActivateWithConfiguration(new String[] { "/content/usergenerated" }, new String[] { "" }, false);
    final AtomicInteger counter = new AtomicInteger();
    context.checking(new Expectations() {

        {
            allowing(request).getMethod();
            will(returnValue("GET"));
            exactly(1).of(response).containsHeader("Content-Disposition");
            will(returnValue(false));
            exactly(1).of(response).containsHeader("Content-Disposition");
            will(returnValue(true));
            exactly(1).of(request).getAttribute(RewriterResponse.ATTRIBUTE_NAME);
            will(returnValue(null));
            exactly(1).of(request).getAttribute(RewriterResponse.ATTRIBUTE_NAME);
            will(returnValue("text/html"));
            allowing(request).setAttribute(RewriterResponse.ATTRIBUTE_NAME, "text/xml");
            allowing(request).setAttribute(RewriterResponse.ATTRIBUTE_NAME, "text/html");
            allowing(request).getResource();
            will(returnValue(resource));
            allowing(resource).getPath();
            will(returnValue("/content/other"));
            allowing(resource).adaptTo(ValueMap.class);
            will(returnValue(properties));
            allowing(properties).containsKey(PROP_JCR_DATA);
            will(returnValue(true));
            allowing(response).setContentType("text/html");
            allowing(response).setContentType("text/xml");
            //CONTENT DISPOSITION IS NOT SET
            never(response).addHeader("Content-Disposition", "attachment");
        }
    });
    final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter.new RewriterResponse(request, response) {

        @Override
        public void addHeader(String name, String value) {
            counter.incrementAndGet();
        }
    };
    rewriterResponse.setContentType("text/html");
    Assert.assertEquals(0, counter.intValue());
}
Also used : SlingHttpServletResponse(org.apache.sling.api.SlingHttpServletResponse) Expectations(org.jmock.Expectations) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) ValueMap(org.apache.sling.api.resource.ValueMap) Resource(org.apache.sling.api.resource.Resource) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) SlingHttpServletRequest(org.apache.sling.api.SlingHttpServletRequest) Test(org.junit.Test)

Example 72 with SlingHttpServletRequest

use of org.apache.sling.api.SlingHttpServletRequest in project sling by apache.

the class ContentDispositionFilterTest method test_isJcrData7.

@Test
public void test_isJcrData7() throws Throwable {
    contentDispositionFilter = new ContentDispositionFilter();
    final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class);
    final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class);
    final Resource child = context.mock(Resource.class, "child");
    final Resource resource = context.mock(Resource.class, "resource");
    final ValueMap properties = context.mock(ValueMap.class);
    context.checking(new Expectations() {

        {
            allowing(request).getResource();
            will(returnValue(resource));
            allowing(resource).adaptTo(ValueMap.class);
            will(returnValue(properties));
            allowing(properties).containsKey(PROP_JCR_DATA);
            will(returnValue(false));
            allowing(resource).getChild(JCR_CONTENT_LEAF);
            will(returnValue(child));
            allowing(child).adaptTo(ValueMap.class);
            will(returnValue(null));
        }
    });
    final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter.new RewriterResponse(request, response);
    Boolean result = (Boolean) PrivateAccessor.invoke(rewriterResponse, "isJcrData", new Class[] { Resource.class }, new Object[] { resource });
    Assert.assertFalse(result);
}
Also used : SlingHttpServletResponse(org.apache.sling.api.SlingHttpServletResponse) Expectations(org.jmock.Expectations) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) ValueMap(org.apache.sling.api.resource.ValueMap) Resource(org.apache.sling.api.resource.Resource) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) SlingHttpServletRequest(org.apache.sling.api.SlingHttpServletRequest) Test(org.junit.Test)

Example 73 with SlingHttpServletRequest

use of org.apache.sling.api.SlingHttpServletRequest in project sling by apache.

the class ContentDispositionFilterTest method test_doFilter16.

/**
     * Test repeated setContentType calls don't add multiple headers, case 2 changing mime type
     * @throws Throwable
     */
@Test
public void test_doFilter16() throws Throwable {
    final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class);
    final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class);
    final Resource resource = context.mock(Resource.class, "resource");
    final ValueMap properties = context.mock(ValueMap.class);
    callActivateWithConfiguration(new String[] { "/content/usergenerated" }, new String[] { "" });
    final AtomicInteger counter = new AtomicInteger();
    context.checking(new Expectations() {

        {
            allowing(request).getMethod();
            will(returnValue("GET"));
            exactly(1).of(response).containsHeader("Content-Disposition");
            will(returnValue(false));
            exactly(1).of(response).containsHeader("Content-Disposition");
            will(returnValue(true));
            exactly(1).of(request).getAttribute(RewriterResponse.ATTRIBUTE_NAME);
            will(returnValue(null));
            exactly(1).of(request).getAttribute(RewriterResponse.ATTRIBUTE_NAME);
            will(returnValue("text/html"));
            allowing(request).setAttribute(RewriterResponse.ATTRIBUTE_NAME, "text/xml");
            allowing(request).setAttribute(RewriterResponse.ATTRIBUTE_NAME, "text/html");
            allowing(request).getResource();
            will(returnValue(resource));
            allowing(resource).getPath();
            will(returnValue("/content/usergenerated"));
            allowing(resource).adaptTo(ValueMap.class);
            will(returnValue(properties));
            allowing(properties).containsKey(PROP_JCR_DATA);
            will(returnValue(true));
            allowing(response).setContentType("text/html");
            allowing(response).setContentType("text/xml");
            //CONTENT DISPOSITION IS SET
            exactly(1).of(response).addHeader("Content-Disposition", "attachment");
        }
    });
    final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter.new RewriterResponse(request, response) {

        @Override
        public void addHeader(String name, String value) {
            counter.incrementAndGet();
        }
    };
    rewriterResponse.setContentType("text/html");
    rewriterResponse.setContentType("text/xml");
    Assert.assertEquals(1, counter.intValue());
}
Also used : SlingHttpServletResponse(org.apache.sling.api.SlingHttpServletResponse) Expectations(org.jmock.Expectations) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) ValueMap(org.apache.sling.api.resource.ValueMap) Resource(org.apache.sling.api.resource.Resource) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) SlingHttpServletRequest(org.apache.sling.api.SlingHttpServletRequest) Test(org.junit.Test)

Example 74 with SlingHttpServletRequest

use of org.apache.sling.api.SlingHttpServletRequest in project sling by apache.

the class ContentDispositionFilterTest method test_doFilter5.

@Test
public void test_doFilter5() throws Throwable {
    final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class);
    final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class);
    final Resource resource = context.mock(Resource.class, "resource");
    final ValueMap properties = context.mock(ValueMap.class);
    callActivateWithConfiguration(new String[] { "/content/usergenerated/*" }, new String[] { "" });
    final AtomicInteger counter = new AtomicInteger();
    context.checking(new Expectations() {

        {
            allowing(request).getMethod();
            will(returnValue("GET"));
            allowing(response).containsHeader("Content-Disposition");
            will(returnValue(false));
            allowing(request).getAttribute(RewriterResponse.ATTRIBUTE_NAME);
            will(returnValue(null));
            allowing(request).setAttribute(RewriterResponse.ATTRIBUTE_NAME, "text/html");
            allowing(request).getResource();
            will(returnValue(resource));
            allowing(resource).getPath();
            will(returnValue("/content/usergenerated/author"));
            allowing(resource).adaptTo(ValueMap.class);
            will(returnValue(properties));
            allowing(properties).containsKey(PROP_JCR_DATA);
            will(returnValue(true));
            allowing(response).setContentType("text/html");
            //CONTENT DISPOSITION IS SET
            exactly(1).of(response).addHeader("Content-Disposition", "attachment");
        }
    });
    final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter.new RewriterResponse(request, response) {

        @Override
        public void addHeader(String name, String value) {
            counter.incrementAndGet();
        }
    };
    rewriterResponse.setContentType("text/html");
    Assert.assertEquals(1, counter.intValue());
}
Also used : SlingHttpServletResponse(org.apache.sling.api.SlingHttpServletResponse) Expectations(org.jmock.Expectations) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) ValueMap(org.apache.sling.api.resource.ValueMap) Resource(org.apache.sling.api.resource.Resource) RewriterResponse(org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse) SlingHttpServletRequest(org.apache.sling.api.SlingHttpServletRequest) Test(org.junit.Test)

Example 75 with SlingHttpServletRequest

use of org.apache.sling.api.SlingHttpServletRequest in project sling by apache.

the class CacheControlFilter method doFilter.

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) request;
    final String resourceType = slingRequest.getResource().getResourceType();
    final Configuration config = configurationWhiteboard.getConfiguration(slingRequest, resourceType);
    if (config != null && config.hasTtlSet()) {
        SlingHttpServletResponse slingResponse = (SlingHttpServletResponse) response;
        slingResponse.setHeader(HEADER_CACHE_CONTROL, "max-age=" + config.getTtl());
        LOG.debug("set \"{}: max-age={}\" to {}", HEADER_CACHE_CONTROL, config.getTtl(), resourceType);
    }
    chain.doFilter(request, response);
}
Also used : SlingHttpServletResponse(org.apache.sling.api.SlingHttpServletResponse) SlingHttpServletRequest(org.apache.sling.api.SlingHttpServletRequest)

Aggregations

SlingHttpServletRequest (org.apache.sling.api.SlingHttpServletRequest)98 Resource (org.apache.sling.api.resource.Resource)52 SlingHttpServletResponse (org.apache.sling.api.SlingHttpServletResponse)49 Test (org.junit.Test)48 Expectations (org.jmock.Expectations)32 RewriterResponse (org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse)31 ValueMap (org.apache.sling.api.resource.ValueMap)27 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)15 IOException (java.io.IOException)10 Bindings (javax.script.Bindings)10 SlingBindings (org.apache.sling.api.scripting.SlingBindings)9 ServletException (javax.servlet.ServletException)8 ResourceResolver (org.apache.sling.api.resource.ResourceResolver)8 AbstractPipeTest (org.apache.sling.pipes.AbstractPipeTest)8 ContainerPipeTest (org.apache.sling.pipes.ContainerPipeTest)8 PrintWriter (java.io.PrintWriter)7 Map (java.util.Map)7 SlingScriptHelper (org.apache.sling.api.scripting.SlingScriptHelper)7 MockSlingHttpServlet3Request (org.apache.sling.servlets.post.impl.helper.MockSlingHttpServlet3Request)6 HttpServletResponse (javax.servlet.http.HttpServletResponse)5