This is an automated email from the ASF dual-hosted git repository. cziegeler pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
commit b1dc3b2d013bfda46b067f046cfa68ae978c4871 Author: Carsten Ziegeler <[email protected]> AuthorDate: Mon Nov 13 16:34:25 2023 +0100 SLING-12149 : ResourceResolver: Illegal mode passthrough for resource provider null --- .../impl/providers/ResourceProviderInfo.java | 3 +- .../impl/providers/ResourceProviderInfoTest.java | 102 +++++++++++++++++++++ 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfo.java b/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfo.java index 62b1707..6f475dd 100644 --- a/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfo.java +++ b/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfo.java @@ -78,7 +78,8 @@ public class ResourceProviderInfo implements Comparable<ResourceProviderInfo> { this.adaptable = c.convert(ref.getProperty(ResourceProvider.PROPERTY_ADAPTABLE)).to(boolean.class); this.refreshable = c.convert(ref.getProperty(ResourceProvider.PROPERTY_REFRESHABLE)).to(boolean.class); this.attributable = c.convert(ref.getProperty(ResourceProvider.PROPERTY_ATTRIBUTABLE)).to(boolean.class); - final String modeValue = c.convert(ref.getProperty(ResourceProvider.PROPERTY_MODE)).defaultValue(ResourceProvider.MODE_OVERLAY.toUpperCase()).to(String.class); + final String modeValue = c.convert(ref.getProperty(ResourceProvider.PROPERTY_MODE)) + .defaultValue(ResourceProvider.MODE_OVERLAY).to(String.class).toUpperCase(); Mode mode = null; try { mode = Mode.valueOf(modeValue); diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfoTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfoTest.java new file mode 100644 index 0000000..07509ff --- /dev/null +++ b/src/test/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderInfoTest.java @@ -0,0 +1,102 @@ +/* + * 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.resourceresolver.impl.providers; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import org.apache.sling.api.resource.runtime.dto.AuthType; +import org.apache.sling.spi.resource.provider.ResourceProvider; +import org.junit.Test; +import org.mockito.Mockito; +import org.osgi.framework.ServiceReference; + +public class ResourceProviderInfoTest { + + @SuppressWarnings({"rawtypes", "unchecked"}) + @Test public void testValidInfo() { + final ServiceReference<ResourceProvider> ref = Mockito.mock(ServiceReference.class); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_ROOT)).thenReturn("/test"); + + final ResourceProviderInfo info = new ResourceProviderInfo(ref); + assertEquals("/test", info.getPath()); + assertNull(info.getName()); + assertEquals(ResourceProviderInfo.Mode.OVERLAY, info.getMode()); + assertEquals(AuthType.no, info.getAuthType()); + assertTrue(info.isValid()); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + @Test public void testValidAuthInfo() { + final ServiceReference<ResourceProvider> ref = Mockito.mock(ServiceReference.class); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_ROOT)).thenReturn("/test"); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_AUTHENTICATE)).thenReturn(AuthType.lazy.name()); + + final ResourceProviderInfo info = new ResourceProviderInfo(ref); + assertEquals("/test", info.getPath()); + assertNull(info.getName()); + assertEquals(ResourceProviderInfo.Mode.OVERLAY, info.getMode()); + assertEquals(AuthType.lazy, info.getAuthType()); + assertTrue(info.isValid()); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + @Test public void testInvalidAuthInfo() { + final ServiceReference<ResourceProvider> ref = Mockito.mock(ServiceReference.class); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_ROOT)).thenReturn("/test"); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_AUTHENTICATE)).thenReturn("hello"); + + final ResourceProviderInfo info = new ResourceProviderInfo(ref); + assertEquals("/test", info.getPath()); + assertNull(info.getName()); + assertEquals(ResourceProviderInfo.Mode.OVERLAY, info.getMode()); + assertNull(info.getAuthType()); + assertFalse(info.isValid()); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + @Test public void testValidMode() { + final ServiceReference<ResourceProvider> ref = Mockito.mock(ServiceReference.class); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_ROOT)).thenReturn("/test"); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_MODE)).thenReturn(ResourceProviderInfo.Mode.PASSTHROUGH.name().toLowerCase()); + + final ResourceProviderInfo info = new ResourceProviderInfo(ref); + assertEquals("/test", info.getPath()); + assertNull(info.getName()); + assertEquals(ResourceProviderInfo.Mode.PASSTHROUGH, info.getMode()); + assertEquals(AuthType.no, info.getAuthType()); + assertTrue(info.isValid()); + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + @Test public void testInvalidMode() { + final ServiceReference<ResourceProvider> ref = Mockito.mock(ServiceReference.class); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_ROOT)).thenReturn("/test"); + Mockito.when(ref.getProperty(ResourceProvider.PROPERTY_MODE)).thenReturn("hello"); + + final ResourceProviderInfo info = new ResourceProviderInfo(ref); + assertEquals("/test", info.getPath()); + assertNull(info.getName()); + assertNull(info.getMode()); + assertEquals(AuthType.no, info.getAuthType()); + assertFalse(info.isValid()); + } +}
