Author: bdelacretaz
Date: Fri Oct 14 09:35:44 2016
New Revision: 1764845
URL: http://svn.apache.org/viewvc?rev=1764845&view=rev
Log:
SLING-5135 - verify handling of forbidden attributes
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
Modified:
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java?rev=1764845&r1=1764844&r2=1764845&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/helper/ResourceResolverControlTest.java
Fri Oct 14 09:35:44 2016
@@ -18,6 +18,7 @@
*/
package org.apache.sling.resourceresolver.impl.helper;
+import java.util.ArrayList;
import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasEntry;
@@ -37,12 +38,14 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceMetadata;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.resource.runtime.dto.AuthType;
@@ -59,6 +62,9 @@ import org.apache.sling.spi.resource.pro
import org.apache.sling.spi.resource.provider.ResourceProvider;
import org.apache.sling.testing.mock.osgi.MockOsgi;
import org.hamcrest.Matchers;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
@@ -67,6 +73,16 @@ import org.osgi.framework.BundleContext;
@SuppressWarnings("unchecked")
public class ResourceResolverControlTest {
+ private static final String TEST_ATTRIBUTE = "some.test.attribute";
+
+ private static final List<String> TEST_FORBIDDEN_ATTRIBUTES = new
ArrayList<String>();
+
+ static {
+ TEST_FORBIDDEN_ATTRIBUTES.add(ResourceResolverFactory.PASSWORD);
+
TEST_FORBIDDEN_ATTRIBUTES.add(ResourceProvider.AUTH_SERVICE_BUNDLE);
+ TEST_FORBIDDEN_ATTRIBUTES.add(ResourceResolverFactory.SUBSERVICE);
+ }
+
// query language names
private static final String QL_MOCK = "MockQueryLanguage";
private static final String QL_ANOTHER_MOCK = "AnotherMockQueryLanguage";
@@ -136,7 +152,7 @@ public class ResourceResolverControlTest
ResourceResolver rr = mock(ResourceResolver.class);
ResourceAccessSecurityTracker securityTracker =
Mockito.mock(ResourceAccessSecurityTracker.class);
- authInfo = Collections.emptyMap();
+ authInfo = getAuthInfo();
handlers = Arrays.asList(rootHandler, handler);
final ResourceProviderStorage storage = new
ResourceProviderStorage(handlers);
@@ -150,6 +166,21 @@ public class ResourceResolverControlTest
});
context = new ResourceResolverContext(rr, securityTracker);
}
+
+ /** Return test auth info */
+ private Map<String, Object> getAuthInfo() {
+ final Map<String, Object> result = new HashMap<String, Object>();
+
+ // Add all forbidden attributes to be able to verify that
+ // they are masked
+ for(String str : TEST_FORBIDDEN_ATTRIBUTES) {
+ result.put(str, "should be hidden");
+ }
+
+ result.put(TEST_ATTRIBUTE, "is " + TEST_ATTRIBUTE);
+
+ return result;
+ }
/**
* Configures the provider to return a mock resource for the specified path
@@ -425,6 +456,24 @@ public class ResourceResolverControlTest
assertThat("query result count", count, Matchers.equalTo(1));
}
+
+ @Test
+ public void forbiddenAttributeNames() {
+ for(String name : crp.getAttributeNames(context)) {
+ if(TEST_FORBIDDEN_ATTRIBUTES.contains(name)) {
+ fail("Attribute " + name + " should not be accessible");
+ }
+ }
+ assertTrue("Expecting non-forbidden attribute",
crp.getAttributeNames(context).contains(TEST_ATTRIBUTE));
+ }
+
+ @Test
+ public void forbiddenAttributeValues() {
+ for(String name : TEST_FORBIDDEN_ATTRIBUTES) {
+ assertNull("Expecting " + name + " to be hidden",
crp.getAttribute(context, name));
+ }
+ assertEquals("is " + TEST_ATTRIBUTE, crp.getAttribute(context,
TEST_ATTRIBUTE));
+ }
/**
* Simple test-only QueryLanguageProvider