This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.security-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-security.git
commit cf3c4e79cf7b6bb9353af8065354a28c58520637 Author: Carsten Ziegeler <[email protected]> AuthorDate: Tue Aug 2 12:14:05 2016 +0000 Migrate to parent pom 27 git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/security@1754893 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 34 +- .../security/impl/ContentDispositionFilter.java | 102 +- .../apache/sling/security/impl/ReferrerFilter.java | 11 +- .../impl/ContentDispositionFilterTest.java | 1010 ++++++++------------ .../sling/security/impl/ReferrerFilterTest.java | 17 +- 5 files changed, 487 insertions(+), 687 deletions(-) diff --git a/pom.xml b/pom.xml index cfae422..b05b3bd 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> - <version>26</version> + <version>27</version> <relativePath /> </parent> @@ -85,46 +85,38 @@ <scope>provided</scope> </dependency> <dependency> - <groupId>org.apache.felix</groupId> - <artifactId>org.apache.felix.scr.annotations</artifactId> - </dependency> - <dependency> <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - </dependency> - <dependency> - <groupId>org.osgi</groupId> - <artifactId>org.osgi.core</artifactId> + <artifactId>javax.servlet-api</artifactId> </dependency> <dependency> <groupId>org.osgi</groupId> - <artifactId>org.osgi.compendium</artifactId> + <artifactId>osgi.core</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-all</artifactId> - <version>1.8.2</version> - <scope>test</scope> - </dependency> <!-- Testing --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + </dependency> + <dependency> <groupId>org.jmock</groupId> <artifactId>jmock-junit4</artifactId> <scope>test</scope> </dependency> <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-all</artifactId> + <version>1.10.19</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>junit-addons</groupId> <artifactId>junit-addons</artifactId> <version>1.4</version> diff --git a/src/main/java/org/apache/sling/security/impl/ContentDispositionFilter.java b/src/main/java/org/apache/sling/security/impl/ContentDispositionFilter.java index fb5d031..abb3bd3 100644 --- a/src/main/java/org/apache/sling/security/impl/ContentDispositionFilter.java +++ b/src/main/java/org/apache/sling/security/impl/ContentDispositionFilter.java @@ -20,7 +20,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Dictionary; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -36,17 +35,16 @@ import javax.servlet.ServletResponse; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.PropertyUnbounded; -import org.apache.felix.scr.annotations.Service; import org.apache.felix.scr.annotations.Properties; import org.apache.felix.scr.annotations.Property; +import org.apache.felix.scr.annotations.PropertyUnbounded; +import org.apache.felix.scr.annotations.Service; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.api.wrappers.SlingHttpServletResponseWrapper; import org.apache.sling.commons.osgi.PropertiesUtil; -import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -58,30 +56,30 @@ label=" Apache Sling Content Disposition Filter") @Property(name = "sling.filter.scope", value = { "request" }, propertyPrivate = true), @Property(name = "service.ranking", intValue = -25000, propertyPrivate = true) }) public class ContentDispositionFilter implements Filter { - + /** Logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Property(label = "Content Disposition Paths", + + @Property(label = "Content Disposition Paths", description = "These paths are checked by the filter. "+ "Each entry is of the form 'path [ \":\" CSV of excluded content types ]'. " + "Invalid entries are logged and ignored." , unbounded = PropertyUnbounded.ARRAY, value = { "" }) private static final String PROP_CONTENT_DISPOSTION_PATHS = "sling.content.disposition.paths"; - - @Property(label = "Content Disposition Excluded Paths", + + @Property(label = "Content Disposition Excluded Paths", description = "These paths are excluded by the filter. "+ "Each entry is of the form 'path'. " , unbounded = PropertyUnbounded.ARRAY, value = { "" }) private static final String PROP_CONTENT_DISPOSTION_EXCLUDED_PATHS = "sling.content.disposition.excluded.paths"; - + private static final boolean DEFAULT_ENABLE_CONTENT_DISPOSTION_ALL_PATHS = false; @Property(boolValue = DEFAULT_ENABLE_CONTENT_DISPOSTION_ALL_PATHS , label = "Enable Content Disposition for all paths", description ="This flag controls whether to enable" + " Content Disposition for all paths, except for the excluded paths defined by sling.content.disposition.excluded.paths") private static final String PROP_ENABLE_CONTENT_DISPOSTION_ALL_PATHS = "sling.content.disposition.all.paths"; - + /** * Set of paths */ @@ -91,29 +89,27 @@ public class ContentDispositionFilter implements Filter { * Array of prefixes of paths */ private String[] contentDispositionPathsPfx; - - Set contentDispositionExcludedPaths; + + Set<String> contentDispositionExcludedPaths; private Map<String, Set<String>> contentTypesMapping; - + private boolean enableContentDispositionAllPaths; - + @Activate - private void activate(final ComponentContext ctx) { - final Dictionary props = ctx.getProperties(); - + private void activate(final Map<String, Object> props) { String[] contentDispostionProps = PropertiesUtil.toStringArray(props.get(PROP_CONTENT_DISPOSTION_PATHS)); - + Set<String> paths = new HashSet<String>(); List<String> pfxs = new ArrayList<String>(); Map<String, Set<String>> contentTypesMap = new HashMap<String, Set<String>>(); - + for (String path : contentDispostionProps) { path = path.trim(); if (path.length() > 0) { int idx = path.indexOf('*'); int colonIdx = path.indexOf(":"); - + if (colonIdx > -1 && colonIdx < idx) { // ':' in paths is not allowed logger.info("':' in paths is not allowed."); @@ -135,7 +131,7 @@ public class ContentDispositionFilter implements Filter { p = path; } paths.add(p); - } + } if (colonIdx != -1 && p != null) { Set <String> contentTypes = getContentTypes(path.substring(colonIdx+1)); contentTypesMap.put(p, contentTypes); @@ -144,35 +140,38 @@ public class ContentDispositionFilter implements Filter { } } - + contentDispositionPaths = paths.isEmpty() ? Collections.<String>emptySet() : paths; contentDispositionPathsPfx = pfxs.toArray(new String[pfxs.size()]); contentTypesMapping = contentTypesMap.isEmpty()?Collections.<String, Set<String>>emptyMap(): contentTypesMap; - + enableContentDispositionAllPaths = PropertiesUtil.toBoolean(props.get(PROP_ENABLE_CONTENT_DISPOSTION_ALL_PATHS),DEFAULT_ENABLE_CONTENT_DISPOSTION_ALL_PATHS); - - + + String[] contentDispostionExcludedPathsArray = PropertiesUtil.toStringArray(props.get(PROP_CONTENT_DISPOSTION_EXCLUDED_PATHS)); - + contentDispositionExcludedPaths = new HashSet<String>(Arrays.asList(contentDispostionExcludedPathsArray)); - + logger.info("Initialized. content disposition paths: {}, content disposition paths-pfx {}, content disposition excluded paths: {}. Enable Content Disposition for all paths is set to {}", new Object[]{ contentDispositionPaths, contentDispositionPathsPfx, contentDispositionExcludedPaths, enableContentDispositionAllPaths} ); } - + + @Override public void init(FilterConfig filterConfig) throws ServletException { // nothing to do } + @Override public void destroy() { // nothing to do } + @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - + final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) request; final SlingHttpServletResponse slingResponse = (SlingHttpServletResponse) response; @@ -180,9 +179,9 @@ public class ContentDispositionFilter implements Filter { chain.doFilter(request, rewriterResponse); } - + //---------- PRIVATE METHODS --------- - + private static Set<String> getContentTypes(String contentTypes) { Set<String> contentTypesSet = new HashSet<String>(); if (contentTypes != null && contentTypes.length() > 0) { @@ -193,37 +192,38 @@ public class ContentDispositionFilter implements Filter { } return contentTypesSet; } - - //----------- INNER CLASSES ------------ + + //----------- INNER CLASSES ------------ protected class RewriterResponse extends SlingHttpServletResponseWrapper { - + private static final String CONTENT_DISPOSTION = "Content-Disposition"; private static final String CONTENT_DISPOSTION_ATTACHMENT = "attachment"; - + private static final String PROP_JCR_DATA = "jcr:data"; - + private static final String JCR_CONTENT_LEAF = "jcr:content"; - + static final String ATTRIBUTE_NAME = "org.apache.sling.security.impl.ContentDispositionFilter.RewriterResponse.contentType"; - + /** The current request. */ private final SlingHttpServletRequest request; - + private final Resource resource; public RewriterResponse(SlingHttpServletRequest request, SlingHttpServletResponse wrappedResponse) { - super(wrappedResponse); + super(wrappedResponse); this.request = request; this.resource = request.getResource(); } - + /** * @see javax.servlet.ServletResponseWrapper#setContentType(java.lang.String) */ - public void setContentType(String type) { + @Override + public void setContentType(String type) { if ("GET".equals(request.getMethod())) { String previousContentType = (String) request.getAttribute(ATTRIBUTE_NAME); @@ -231,14 +231,14 @@ public class ContentDispositionFilter implements Filter { return; } request.setAttribute(ATTRIBUTE_NAME, type); - + String resourcePath = resource.getPath(); if (!contentDispositionExcludedPaths.contains(resourcePath)) { if (enableContentDispositionAllPaths) { setContentDisposition(resource); - } else { + } else { boolean contentDispositionAdded = false; if (contentDispositionPaths.contains(resourcePath)) { @@ -251,7 +251,7 @@ public class ContentDispositionFilter implements Filter { } else { contentDispositionAdded = setContentDisposition(resource); } - } + } if (!contentDispositionAdded) { for (String path : contentDispositionPathsPfx) { if (resourcePath.startsWith(path)) { @@ -273,10 +273,10 @@ public class ContentDispositionFilter implements Filter { } } super.setContentType(type); - } - + } + //---------- PRIVATE METHODS --------- - + private boolean setContentDisposition(Resource resource) { boolean contentDispositionAdded = false; if (!this.containsHeader(CONTENT_DISPOSTION) && this.isJcrData(resource)) { @@ -285,7 +285,7 @@ public class ContentDispositionFilter implements Filter { } return contentDispositionAdded; } - + private boolean isJcrData(Resource resource){ boolean jcrData = false; if (resource!= null) { @@ -300,7 +300,7 @@ public class ContentDispositionFilter implements Filter { jcrData = true; } } - } + } } return jcrData; } diff --git a/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java b/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java index f3c4951..39870b4 100644 --- a/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java +++ b/src/main/java/org/apache/sling/security/impl/ReferrerFilter.java @@ -32,6 +32,7 @@ import java.util.Enumeration; import java.util.HashSet; import java.util.Hashtable; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.regex.Pattern; @@ -54,7 +55,6 @@ import org.apache.sling.commons.osgi.PropertiesUtil; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; import org.osgi.framework.ServiceRegistration; -import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -211,9 +211,7 @@ public class ReferrerFilter implements Filter { * Activate */ @Activate - protected void activate(final ComponentContext ctx) { - final Dictionary props = ctx.getProperties(); - + protected void activate(final BundleContext context, final Map<String, Object> props) { this.allowEmpty = PropertiesUtil.toBoolean(props.get(PROP_ALLOW_EMPTY), DEFAULT_ALLOW_EMPTY); final String[] allowRegexHosts = defaultIfEmpty(PropertiesUtil.toStringArray(props.get(PROP_HOSTS_REGEX), @@ -235,7 +233,7 @@ public class ReferrerFilter implements Filter { filterMethods[i] = filterMethods[i].toUpperCase(); } } - this.configPrinterRegistration = registerConfigPrinter(ctx.getBundleContext()); + this.configPrinterRegistration = registerConfigPrinter(context); } @Deactivate @@ -270,6 +268,7 @@ public class ReferrerFilter implements Filter { return false; } + @Override public void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain chain) @@ -373,6 +372,7 @@ public class ReferrerFilter implements Filter { /** * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ + @Override public void init(final FilterConfig config) throws ServletException { // nothing to do } @@ -380,6 +380,7 @@ public class ReferrerFilter implements Filter { /** * @see javax.servlet.Filter#destroy() */ + @Override public void destroy() { // nothing to do } diff --git a/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java b/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java index a4941b6..ccb1406 100644 --- a/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java +++ b/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java @@ -16,14 +16,11 @@ */ package org.apache.sling.security.impl; -import java.util.Dictionary; -import java.util.Hashtable; +import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; -import junitx.util.PrivateAccessor; - import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; @@ -34,249 +31,195 @@ import org.jmock.Mockery; import org.jmock.integration.junit4.JUnit4Mockery; import org.junit.Assert; import org.junit.Test; -import org.osgi.service.component.ComponentContext; + +import junitx.util.PrivateAccessor; public class ContentDispositionFilterTest { - + private ContentDispositionFilter contentDispositionFilter; private final Mockery context = new JUnit4Mockery(); - + private static final String PROP_JCR_DATA = "jcr:data"; - + private static final String JCR_CONTENT_LEAF = "jcr:content"; + @SuppressWarnings("unchecked") @Test public void test_activator1() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); Set<String> contentDispositionPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPaths"); - Assert.assertEquals(1, contentDispositionPaths.size()); + Assert.assertEquals(1, contentDispositionPaths.size()); String[] contentDispositionPathsPfx = ( String[] ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPathsPfx"); - Assert.assertEquals(0, contentDispositionPathsPfx.length); + Assert.assertEquals(0, contentDispositionPathsPfx.length); Map <String, Set<String>> contentTypesMapping = ( Map <String, Set<String>> ) PrivateAccessor.getField(contentDispositionFilter, "contentTypesMapping"); - Assert.assertEquals(0, contentTypesMapping.size()); + Assert.assertEquals(0, contentTypesMapping.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_activator2() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPaths"); - Assert.assertEquals(0, contentDispositionPaths.size()); + Assert.assertEquals(0, contentDispositionPaths.size()); String[] contentDispositionPathsPfx = ( String[] ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPathsPfx"); - Assert.assertEquals(1, contentDispositionPathsPfx.length); + Assert.assertEquals(1, contentDispositionPathsPfx.length); Map <String, Set<String>> contentTypesMapping = ( Map <String, Set<String>> ) PrivateAccessor.getField(contentDispositionFilter, "contentTypesMapping"); - Assert.assertEquals(0, contentTypesMapping.size()); + Assert.assertEquals(0, contentTypesMapping.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_activator3() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/libs", "/content/usergenerated/*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPaths"); - Assert.assertEquals(1, contentDispositionPaths.size()); + Assert.assertEquals(1, contentDispositionPaths.size()); String[] contentDispositionPathsPfx = ( String[] ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPathsPfx"); - Assert.assertEquals(1, contentDispositionPathsPfx.length); + Assert.assertEquals(1, contentDispositionPathsPfx.length); Map <String, Set<String>> contentTypesMapping = ( Map <String, Set<String>> ) PrivateAccessor.getField(contentDispositionFilter, "contentTypesMapping"); - Assert.assertEquals(0, contentTypesMapping.size()); + Assert.assertEquals(0, contentTypesMapping.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_activator5() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPaths"); - Assert.assertEquals(0, contentDispositionPaths.size()); + Assert.assertEquals(0, contentDispositionPaths.size()); String[] contentDispositionPathsPfx = ( String[] ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPathsPfx"); - Assert.assertEquals(0, contentDispositionPathsPfx.length); + Assert.assertEquals(0, contentDispositionPathsPfx.length); Map <String, Set<String>> contentTypesMapping = ( Map <String, Set<String>> ) PrivateAccessor.getField(contentDispositionFilter, "contentTypesMapping"); - Assert.assertEquals(0, contentTypesMapping.size()); + Assert.assertEquals(0, contentTypesMapping.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_activator6() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/libs:*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPaths"); - Assert.assertEquals(0, contentDispositionPaths.size()); + Assert.assertEquals(0, contentDispositionPaths.size()); String[] contentDispositionPathsPfx = ( String[] ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPathsPfx"); - Assert.assertEquals(0, contentDispositionPathsPfx.length); + Assert.assertEquals(0, contentDispositionPathsPfx.length); Map <String, Set<String>> contentTypesMapping = ( Map <String, Set<String>> ) PrivateAccessor.getField(contentDispositionFilter, "contentTypesMapping"); - Assert.assertEquals(0, contentTypesMapping.size()); + Assert.assertEquals(0, contentTypesMapping.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_activator7() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/libs:text/html,text/plain","/content/usergenerated/*:image/jpeg"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPaths"); - Assert.assertEquals(1, contentDispositionPaths.size()); + Assert.assertEquals(1, contentDispositionPaths.size()); String[] contentDispositionPathsPfx = ( String[] ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionPathsPfx"); - Assert.assertEquals(1, contentDispositionPathsPfx.length); + Assert.assertEquals(1, contentDispositionPathsPfx.length); Map <String, Set<String>> contentTypesMapping = ( Map <String, Set<String>> ) PrivateAccessor.getField(contentDispositionFilter, "contentTypesMapping"); - Assert.assertEquals(2, contentTypesMapping.size()); + Assert.assertEquals(2, contentTypesMapping.size()); Set<String> libsMapping = contentTypesMapping.get("/libs"); Assert.assertEquals(2, libsMapping.size()); libsMapping.contains("text/html"); libsMapping.contains("text/plain"); - + Set<String> userGeneratedMapping = contentTypesMapping.get("/content/usergenerated/"); - Assert.assertEquals(1, userGeneratedMapping.size()); + Assert.assertEquals(1, userGeneratedMapping.size()); userGeneratedMapping.contains("image/jpeg"); } - + + @SuppressWarnings("unchecked") @Test public void test_activator8() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/libs:text/html,text/plain","/content/usergenerated/*:image/jpeg"}); props.put("sling.content.disposition.excluded.paths", new String []{}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionExcludedPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionExcludedPaths"); - Assert.assertEquals(0, contentDispositionExcludedPaths.size()); + Assert.assertEquals(0, contentDispositionExcludedPaths.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_activator9() throws Throwable{ contentDispositionFilter = new ContentDispositionFilter(); - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/libs:text/html,text/plain","/content/usergenerated/*:image/jpeg"}); props.put("sling.content.disposition.excluded.paths", new String []{"/content", "/libs"}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + Set<String> contentDispositionExcludedPaths = ( Set<String> ) PrivateAccessor.getField(contentDispositionFilter, "contentDispositionExcludedPaths"); - Assert.assertEquals(2, contentDispositionExcludedPaths.size()); + Assert.assertEquals(2, contentDispositionExcludedPaths.size()); } - + + @SuppressWarnings("unchecked") @Test public void test_getContentTypes() throws Throwable{ // null content types String contentType = null; Set <String> contentTypesSet = ( Set <String>) PrivateAccessor.invoke(ContentDispositionFilter.class,"getContentTypes", new Class[]{String.class},new Object[]{contentType}); - Assert.assertEquals(0, contentTypesSet.size()); + Assert.assertEquals(0, contentTypesSet.size()); // empty content types contentType = ""; contentTypesSet = ( Set <String>) PrivateAccessor.invoke(ContentDispositionFilter.class,"getContentTypes", new Class[]{String.class},new Object[]{contentType}); - Assert.assertEquals(0, contentTypesSet.size()); + Assert.assertEquals(0, contentTypesSet.size()); contentType = "text/html"; contentTypesSet = ( Set <String>) PrivateAccessor.invoke(ContentDispositionFilter.class,"getContentTypes", new Class[]{String.class},new Object[]{contentType}); - Assert.assertEquals(1, contentTypesSet.size()); + Assert.assertEquals(1, contentTypesSet.size()); contentType = "text/html,text/plain"; contentTypesSet = ( Set <String>) PrivateAccessor.invoke(ContentDispositionFilter.class,"getContentTypes", new Class[]{String.class},new Object[]{contentType}); - Assert.assertEquals(2, contentTypesSet.size()); + Assert.assertEquals(2, contentTypesSet.size()); } - + @Test - public void test_doFilter1() throws Throwable{ + public void test_doFilter1() 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 Resource resource = context.mock(Resource.class, "resource" ); + contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -291,34 +234,27 @@ public class ContentDispositionFilterTest { allowing(response).setContentType("text/html"); //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); - + } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter2() throws Throwable{ + public void test_doFilter2() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -335,36 +271,29 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter3() throws Throwable{ + public void test_doFilter3() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -386,37 +315,31 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + 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/html"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter4() throws Throwable{ + public void test_doFilter4() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -431,36 +354,29 @@ public class ContentDispositionFilterTest { allowing(response).setContentType("text/html"); //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); - + } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter5() throws Throwable{ + 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -482,8 +398,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -491,30 +408,23 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter6() throws Throwable{ + public void test_doFilter6() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -536,8 +446,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -545,27 +456,20 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter7() throws Throwable{ + public void test_doFilter7() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -581,34 +485,27 @@ public class ContentDispositionFilterTest { allowing(response).setContentType("text/html"); //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); - + } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter8() throws Throwable{ + public void test_doFilter8() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -625,32 +522,25 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter9() throws Throwable{ + public void test_doFilter9() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -667,35 +557,28 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter10() throws Throwable{ + public void test_doFilter10() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -717,8 +600,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -726,27 +610,20 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("image/jpeg"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter11() throws Throwable{ + public void test_doFilter11() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -762,34 +639,27 @@ public class ContentDispositionFilterTest { allowing(response).setContentType("text/html"); //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); - + } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter12() throws Throwable{ + public void test_doFilter12() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -806,32 +676,25 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter13() throws Throwable{ + public void test_doFilter13() 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 Resource resource = context.mock(Resource.class, "resource" ); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + context.checking(new Expectations() { { @@ -848,35 +711,28 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION MUST NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); + }); ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + rewriterResponse.setContentType("text/html"); } - + @Test - public void test_doFilter14() throws Throwable{ + public void test_doFilter14() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated/*:text/html,text/plain"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -898,8 +754,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -907,34 +764,27 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("image/jpeg"); Assert.assertEquals(1, counter.intValue()); } - + /** * Test repeated setContentType calls don't add multiple headers, case 1 resetting the same mimetype * @throws Throwable */ @Test - public void test_doFilter15() throws Throwable{ + public void test_doFilter15() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - -} - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -958,8 +808,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -968,34 +819,27 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(1, counter.intValue()); } - + /** * Test repeated setContentType calls don't add multiple headers, case 2 changing mime type * @throws Throwable */ @Test - public void test_doFilter16() throws Throwable{ + 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1023,8 +867,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -1033,32 +878,25 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/xml"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter17() throws Throwable{ + 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); props.put("sling.content.disposition.all.paths", false); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1087,7 +925,8 @@ public class ContentDispositionFilterTest { never(response).addHeader("Content-Disposition", "attachment"); } }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -1095,32 +934,25 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(0, counter.intValue()); } - - + + @Test - public void test_doFilter18() throws Throwable{ + public void test_doFilter18() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{""}); props.put("sling.content.disposition.all.paths", true); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1148,8 +980,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -1157,31 +990,24 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter19() throws Throwable{ + public void test_doFilter19() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{"/content"}); props.put("sling.content.disposition.all.paths", true); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1209,8 +1035,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -1218,31 +1045,24 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter20() throws Throwable{ + public void test_doFilter20() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{"/content/other"}); props.put("sling.content.disposition.all.paths", true); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - final AtomicInteger counter = new AtomicInteger(); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1270,8 +1090,9 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + @Override public void addHeader(String name, String value) { counter.incrementAndGet(); } @@ -1279,31 +1100,24 @@ public class ContentDispositionFilterTest { rewriterResponse.setContentType("text/html"); Assert.assertEquals(0, counter.intValue()); } - + @Test - public void test_doFilter21() throws Throwable{ + public void test_doFilter21() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{"/content"}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); - + context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1325,39 +1139,32 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS SET exactly(1).of(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + 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/html"); Assert.assertEquals(1, counter.intValue()); } - + @Test - public void test_doFilter22() throws Throwable{ + public void test_doFilter22() 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 Resource resource = context.mock(Resource.class, "resource" ); final ValueMap properties = context.mock(ValueMap.class); contentDispositionFilter = new ContentDispositionFilter(); - - final ComponentContext ctx = context.mock(ComponentContext.class); - final Dictionary props = new Hashtable<String, String[]>(); + + final Map<String, Object> props = new HashMap<String, Object>(); props.put("sling.content.disposition.paths", new String []{"/content/usergenerated"}); props.put("sling.content.disposition.excluded.paths", new String []{"/content/usergenerated"}); - - context.checking(new Expectations() { - { - allowing(ctx).getProperties(); - will(returnValue(props)); - - } - }); - PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{ComponentContext.class},new Object[]{ctx}); - - final AtomicInteger counter = new AtomicInteger(); + + PrivateAccessor.invoke(contentDispositionFilter,"activate", new Class[]{Map.class},new Object[]{props}); + + final AtomicInteger counter = new AtomicInteger(); context.checking(new Expectations() { { allowing(request).getMethod(); @@ -1379,55 +1186,56 @@ public class ContentDispositionFilterTest { //CONTENT DISPOSITION IS NOT SET never(response).addHeader("Content-Disposition", "attachment"); } - }); - final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response) { + }); + 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/html"); Assert.assertEquals(0, counter.intValue()); } - + @Test public void test_isJcrData1() throws Throwable { contentDispositionFilter = new ContentDispositionFilter(); final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class); final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); final Resource resource = null; - + context.checking(new Expectations() { { allowing(request).getResource(); will(returnValue(resource)); } }); - + 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); } - + @Test public void test_isJcrData2() throws Throwable { contentDispositionFilter = new ContentDispositionFilter(); final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class); - final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); + final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); final Resource resource = context.mock(Resource.class); - + context.checking(new Expectations() { { allowing(request).getResource(); - will(returnValue(resource)); + will(returnValue(resource)); } - }); - + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); final ValueMap properties = context.mock(ValueMap.class); - + context.checking(new Expectations() { { allowing(resource).adaptTo(ValueMap.class); @@ -1435,26 +1243,26 @@ public class ContentDispositionFilterTest { allowing(properties).containsKey(PROP_JCR_DATA); will(returnValue(true)); } - }); - + }); + Boolean result = (Boolean) PrivateAccessor.invoke(rewriterResponse,"isJcrData", new Class[]{Resource.class},new Object[]{resource}); - + Assert.assertTrue(result); } - + @Test public void test_isJcrData3() throws Throwable { contentDispositionFilter = new ContentDispositionFilter(); final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class); - final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); - + final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); + final Resource resource = context.mock(Resource.class); final ValueMap properties = context.mock(ValueMap.class); - + context.checking(new Expectations() { - { + { allowing(request).getResource(); - will(returnValue(resource)); + will(returnValue(resource)); allowing(resource).adaptTo(ValueMap.class); will(returnValue(properties)); allowing(properties).containsKey(PROP_JCR_DATA); @@ -1462,27 +1270,27 @@ public class ContentDispositionFilterTest { allowing(resource).getChild(JCR_CONTENT_LEAF); 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); } - + @Test public void test_isJcrData4() throws Throwable { contentDispositionFilter = new ContentDispositionFilter(); final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class); - final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.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); final ValueMap childPropoerties = context.mock(ValueMap.class, "childPropoerties"); - + context.checking(new Expectations() { { allowing(request).getResource(); @@ -1498,28 +1306,28 @@ public class ContentDispositionFilterTest { allowing(childPropoerties).containsKey(PROP_JCR_DATA); will(returnValue(false)); } - }); - + }); + 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); } - + @Test public void test_isJcrData5() throws Throwable { contentDispositionFilter = new ContentDispositionFilter(); final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class); - final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.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); final ValueMap childPropoerties = context.mock(ValueMap.class, "childPropoerties"); - + context.checking(new Expectations() { - { + { allowing(request).getResource(); will(returnValue(resource)); allowing(resource).adaptTo(ValueMap.class); @@ -1533,26 +1341,25 @@ public class ContentDispositionFilterTest { allowing(childPropoerties).containsKey(PROP_JCR_DATA); will(returnValue(true)); } - }); - + }); + final ContentDispositionFilter.RewriterResponse rewriterResponse = contentDispositionFilter. new RewriterResponse(request, response); - + Boolean result = (Boolean) PrivateAccessor.invoke(rewriterResponse,"isJcrData", new Class[]{Resource.class},new Object[]{resource}); - + Assert.assertTrue(result); } - + @Test public void test_isJcrData6() throws Throwable { contentDispositionFilter = new ContentDispositionFilter(); final SlingHttpServletRequest request = context.mock(SlingHttpServletRequest.class); - final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); - + final SlingHttpServletResponse response = context.mock(SlingHttpServletResponse.class); + final Resource resource = context.mock(Resource.class); - final ValueMap properties = context.mock(ValueMap.class); - + context.checking(new Expectations() { - { + { allowing(request).getResource(); will(returnValue(resource)); allowing(resource).adaptTo(ValueMap.class); @@ -1560,28 +1367,27 @@ public class ContentDispositionFilterTest { allowing(resource).getChild(JCR_CONTENT_LEAF); 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); } - - + + @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 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); - final ValueMap childPropoerties = context.mock(ValueMap.class, "childPropoerties"); - + context.checking(new Expectations() { - { + { allowing(request).getResource(); will(returnValue(resource)); allowing(resource).adaptTo(ValueMap.class); @@ -1593,12 +1399,12 @@ public class ContentDispositionFilterTest { 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); } } \ No newline at end of file diff --git a/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java b/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java index 14002bc..7eb6d16 100644 --- a/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java +++ b/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java @@ -16,10 +16,15 @@ */ package org.apache.sling.security.impl; -import static org.mockito.Mockito.*; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.util.Dictionary; -import java.util.Hashtable; +import java.util.HashMap; +import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -28,7 +33,6 @@ import org.junit.Before; import org.junit.Test; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; -import org.osgi.service.component.ComponentContext; public class ReferrerFilterTest { @@ -36,18 +40,15 @@ public class ReferrerFilterTest { @Before public void setup() { filter = new ReferrerFilter(); - final ComponentContext ctx = mock(ComponentContext.class); final BundleContext bundleCtx = mock(BundleContext.class); final ServiceRegistration reg = mock(ServiceRegistration.class); - final Dictionary<String, Object> props = new Hashtable<String, Object>(){{ + final Map<String, Object> props = new HashMap<String, Object>(){{ put("allow.hosts", new String[]{"relhost"}); put("allow.hosts.regexp", new String[]{"http://([^.]*.)?abshost:80"}); }}; - doReturn(props).when(ctx).getProperties(); - doReturn(bundleCtx).when(ctx).getBundleContext(); doReturn(reg).when(bundleCtx).registerService(any(String[].class), any(), any(Dictionary.class)); doNothing().when(reg).unregister(); - filter.activate(ctx); + filter.activate(bundleCtx, props); } @Test public void testHostName() { -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
