This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.resourceresolver-mock-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-resourceresolver-mock.git
commit 50f242e58f00ba92459527a0444e691a8e3e94ed Author: Stefan Seifert <[email protected]> AuthorDate: Tue Oct 28 10:17:59 2014 +0000 SLING-4108 JCR/Sling/ResourceResolver Mock: Support providing authentication info git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/resourceresolver-mock@1634835 13f79535-47bb-0310-9956-ffa450edef68 --- .../resourceresolver/MockResourceResolver.java | 15 +++- .../MockResourceResolverFactory.java | 9 ++- .../ResourceResolverLoginTest.java | 92 ++++++++++++++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java index 9798b2f..fb09ba9 100644 --- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java +++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java @@ -53,13 +53,23 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso private final MockResourceResolverFactoryOptions options; private final MockResourceResolverFactory factory; + + private final Map<String,Object> attributes; public MockResourceResolver(final MockResourceResolverFactoryOptions options, final MockResourceResolverFactory factory, final Map<String, Map<String, Object>> resources) { + this(options, factory, resources, Collections.<String,Object>emptyMap()); + } + + public MockResourceResolver(final MockResourceResolverFactoryOptions options, + final MockResourceResolverFactory factory, + final Map<String, Map<String, Object>> resources, + final Map<String,Object> attributes) { this.factory = factory; this.options = options; this.resources = resources; + this.attributes = attributes; } @Override @@ -268,13 +278,12 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso @Override public Iterator<String> getAttributeNames() { - final List<String> emptyList = Collections.emptyList(); - return emptyList.iterator(); + return attributes.keySet().iterator(); } @Override public Object getAttribute(final String name) { - return null; + return attributes.get(name); } @Override diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java index cd4b067..5fee285 100644 --- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java +++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolverFactory.java @@ -64,7 +64,14 @@ public class MockResourceResolverFactory implements ResourceResolverFactory { @Override public ResourceResolver getResourceResolver( final Map<String, Object> authenticationInfo) throws LoginException { - final ResourceResolver result = new MockResourceResolver(options, this, resources); + + // put user name in resolver attributes + Map<String,Object> attributes = new HashMap<String, Object>(); + if (authenticationInfo!=null) { + attributes.put(ResourceResolverFactory.USER, authenticationInfo.get(ResourceResolverFactory.USER)); + } + + final ResourceResolver result = new MockResourceResolver(options, this, resources, attributes); Stack<ResourceResolver> resolverStack = resolverStackHolder.get(); if ( resolverStack == null ) { resolverStack = new Stack<ResourceResolver>(); diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/ResourceResolverLoginTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/ResourceResolverLoginTest.java new file mode 100644 index 0000000..13adf0b --- /dev/null +++ b/src/test/java/org/apache/sling/testing/resourceresolver/ResourceResolverLoginTest.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.sling.testing.resourceresolver; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.util.Map; + +import org.apache.sling.api.resource.LoginException; +import org.apache.sling.api.resource.ResourceResolver; +import org.apache.sling.api.resource.ResourceResolverFactory; +import org.junit.Before; +import org.junit.Test; + +import com.google.common.collect.ImmutableMap; + +/** + * Test different variants of login for resource resolver. + */ +public class ResourceResolverLoginTest { + + private static final Map<String,Object> AUTH_INFO = ImmutableMap.<String, Object>of( + ResourceResolverFactory.USER, "myUser"); + + private MockResourceResolverFactory factory; + + @Before + public void setUp() { + factory = new MockResourceResolverFactory(); + } + + @Test + public void testGetResourceResolverWithoutAuthInfo() throws LoginException { + ResourceResolver resolver = factory.getResourceResolver(null); + assertNotNull(resolver); + assertNull(resolver.getAttribute(ResourceResolverFactory.USER)); + } + + @Test + public void testGetResourceResolverWithAuthInfo() throws LoginException { + ResourceResolver resolver = factory.getResourceResolver(AUTH_INFO); + assertNotNull(resolver); + assertEquals("myUser", resolver.getAttribute(ResourceResolverFactory.USER)); + } + + @Test + public void testGetAdministrativeResourceResolverWithoutAuthInfo() throws LoginException { + ResourceResolver resolver = factory.getAdministrativeResourceResolver(null); + assertNotNull(resolver); + assertNull(resolver.getAttribute(ResourceResolverFactory.USER)); + } + + @Test + public void testGetAdminstrativeResourceResolverWithAuthInfo() throws LoginException { + ResourceResolver resolver = factory.getAdministrativeResourceResolver(AUTH_INFO); + assertNotNull(resolver); + assertNull(resolver.getAttribute(ResourceResolverFactory.USER)); + } + + @Test + public void testGetServiceResourceResolverWithoutAuthInfo() throws LoginException { + ResourceResolver resolver = factory.getServiceResourceResolver(null); + assertNotNull(resolver); + assertNull(resolver.getAttribute(ResourceResolverFactory.USER)); + } + + @Test + public void testGetServiceResourceResolverWithAuthInfo() throws LoginException { + ResourceResolver resolver = factory.getServiceResourceResolver(AUTH_INFO); + assertNotNull(resolver); + assertNull(resolver.getAttribute(ResourceResolverFactory.USER)); + } + +} -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
