Modified: sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java?rev=1754893&r1=1754892&r2=1754893&view=diff ============================================================================== --- sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java (original) +++ sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ContentDispositionFilterTest.java Tue Aug 2 12:14:05 2016 @@ -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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes //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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes //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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes //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 ContentDispositionFilterTes //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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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 ContentDispositionFilterTes 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
Modified: sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java?rev=1754893&r1=1754892&r2=1754893&view=diff ============================================================================== --- sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java (original) +++ sling/trunk/contrib/extensions/security/src/test/java/org/apache/sling/security/impl/ReferrerFilterTest.java Tue Aug 2 12:14:05 2016 @@ -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() {
