You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2021/11/26 14:58:24 UTC

[sling-org-apache-sling-testing-osgi-mock] 01/01: SLING-10940 osgi-mock: Implement MockConfigurationAdmin.getConfiguration(pid, location)

This is an automated email from the ASF dual-hosted git repository.

sseifert pushed a commit to branch feature/SLING-10940-configadmin-getconfig-location
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-osgi-mock.git

commit bf60b06cb263dbfb1a999875216237e144624a2f
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Fri Nov 26 15:57:53 2021 +0100

    SLING-10940 osgi-mock: Implement MockConfigurationAdmin.getConfiguration(pid, location)
---
 .../testing/mock/osgi/MockConfigurationAdmin.java  | 10 ++---
 .../mock/osgi/MockConfigurationAdminTest.java      | 48 ++++++++++++++++++----
 2 files changed, 46 insertions(+), 12 deletions(-)

diff --git a/core/src/main/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdmin.java b/core/src/main/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdmin.java
index 5c8eda0..9059c89 100644
--- a/core/src/main/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdmin.java
+++ b/core/src/main/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdmin.java
@@ -47,6 +47,11 @@ class MockConfigurationAdmin implements ConfigurationAdmin {
     }
 
     @Override
+    public Configuration getConfiguration(final String pid, final String location) throws IOException {
+        return getConfiguration(pid);
+    }
+
+    @Override
     @SuppressWarnings("squid:S1168")
     public Configuration[] listConfigurations(final String filter) throws IOException, InvalidSyntaxException {
         final Filter filterObject = bundleContext.createFilter(filter);
@@ -64,11 +69,6 @@ class MockConfigurationAdmin implements ConfigurationAdmin {
     // --- unsupported operations ---
 
     @Override
-    public Configuration getConfiguration(final String pid, final String location) throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public Configuration createFactoryConfiguration(final String factoryPid) throws IOException {
         throw new UnsupportedOperationException();
     }
diff --git a/core/src/test/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdminTest.java b/core/src/test/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdminTest.java
index 4cb6574..4066958 100644
--- a/core/src/test/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdminTest.java
+++ b/core/src/test/java/org/apache/sling/testing/mock/osgi/MockConfigurationAdminTest.java
@@ -20,6 +20,7 @@ package org.apache.sling.testing.mock.osgi;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
@@ -27,16 +28,17 @@ import java.io.IOException;
 
 import org.apache.sling.testing.mock.osgi.OsgiMetadataUtilTest.ServiceWithMetadata;
 import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
-
-import com.google.common.collect.ImmutableMap;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 
+import com.google.common.collect.ImmutableMap;
+
 public class MockConfigurationAdminTest {
 
     private static final String[] TEST_ADAPTABLES = new String[] {
@@ -47,6 +49,13 @@ public class MockConfigurationAdminTest {
     @Rule
     public OsgiContext context = new OsgiContext();
 
+    private ConfigurationAdmin underTest;
+
+    @Before
+    public void setUp() {
+        underTest = context.getService(ConfigurationAdmin.class);
+    }
+
     @Test
     public void testGetConfigurationString() throws IOException {
         MockOsgi.setConfigForPid(context.bundleContext(), "org.apache.sling.testing.mock.osgi.OsgiMetadataUtilTest$ServiceWithMetadata",
@@ -112,17 +121,42 @@ public class MockConfigurationAdminTest {
         MockOsgi.setConfigForPid(context.bundleContext(), "Configuration2", "prop1", 2, "prop2", "A");
         MockOsgi.setConfigForPid(context.bundleContext(), "Configuration3", "prop1", 3, "prop2", "A");
 
-        final ConfigurationAdmin configurationAdmin = context.bundleContext().getService(context.bundleContext().getServiceReference(ConfigurationAdmin.class));
-        final Configuration[] allConfigurations = configurationAdmin.listConfigurations("(prop1=*)");
+        final Configuration[] allConfigurations = underTest.listConfigurations("(prop1=*)");
         assertEquals(3, allConfigurations.length);
-        final Configuration[] prop2AConfigurations = configurationAdmin.listConfigurations("(prop2=A)");
+        final Configuration[] prop2AConfigurations = underTest.listConfigurations("(prop2=A)");
         assertEquals(2, prop2AConfigurations.length);
-        final Configuration[] searchForAllConfigurations = configurationAdmin.listConfigurations(null);
+        final Configuration[] searchForAllConfigurations = underTest.listConfigurations(null);
         assertTrue(searchForAllConfigurations.length >= 3); // Other configurations could be registered outside this method as well
-        final Configuration[] noConfigurations = configurationAdmin.listConfigurations("(nonexistingprop=nonexistingvalue)");
+        final Configuration[] noConfigurations = underTest.listConfigurations("(nonexistingprop=nonexistingvalue)");
         assertNull(noConfigurations);
     }
 
+    @Test
+    public void testGetConfigurationViaConfigAdmin_NonExisting() throws IOException {
+        Configuration config = underTest.getConfiguration("Configuration1");
+        assertNotNull(config);
+        assertEquals("Configuration1", config.getPid());
+
+        config = underTest.getConfiguration("Configuration1", "location1");
+        assertNotNull(config);
+        assertEquals("Configuration1", config.getPid());
+    }
+
+    @Test
+    public void testGetConfigurationViaConfigAdmin_Existing() throws IOException {
+        MockOsgi.setConfigForPid(context.bundleContext(), "Configuration1", "prop1", 1);
+
+        Configuration config = underTest.getConfiguration("Configuration1");
+        assertNotNull(config);
+        assertEquals("Configuration1", config.getPid());
+        assertEquals(1, config.getProperties().get("prop1"));
+
+        config = underTest.getConfiguration("Configuration1", "location1");
+        assertNotNull(config);
+        assertEquals("Configuration1", config.getPid());
+        assertEquals(1, config.getProperties().get("prop1"));
+    }
+
     static class ServiceWithConfigurationPID {}
 
     static class ServiceWithMultipleConfigurationPID {}