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

bdelacretaz pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-capabilities.git

commit f9653c234e3f319a1e66a21b60fe16aa13e32c74
Author: Bertrand Delacretaz <[email protected]>
AuthorDate: Thu Oct 11 17:05:26 2018 +0200

    Test multiple sources
---
 .../capabilities/internal/CapabilitiesServlet.java |  5 +++
 .../capabilities/it/CapabilitiesBundleIT.java      | 37 +++++++++++++++++-----
 2 files changed, 34 insertions(+), 8 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java 
b/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
index ae7e2b8..b1a91a0 100644
--- 
a/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
+++ 
b/src/main/java/org/apache/sling/capabilities/internal/CapabilitiesServlet.java
@@ -71,6 +71,11 @@ public class CapabilitiesServlet extends 
SlingSafeMethodsServlet {
     }
     
     @Override
+    public String toString() {
+        return getClass().getSimpleName() + ": " + sources.size() + " " + 
CapabilitiesSource.class.getSimpleName() + " active";
+    }
+
+    @Override
     protected void doGet(SlingHttpServletRequest request, 
SlingHttpServletResponse response) throws ServletException, IOException {
         
         // Resource Path must match a configurable set of patterns, to prevent
diff --git 
a/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java 
b/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java
index 00dc3dc..6541579 100644
--- a/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java
+++ b/src/test/java/org/apache/sling/capabilities/it/CapabilitiesBundleIT.java
@@ -20,9 +20,11 @@ package org.apache.sling.capabilities.it;
 
 import java.util.Map;
 import javax.inject.Inject;
+import javax.servlet.Servlet;
 import org.apache.sling.capabilities.CapabilitiesSource;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -31,6 +33,8 @@ import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
 import org.ops4j.pax.exam.spi.reactors.PerClass;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 
 @RunWith(PaxExam.class)
@@ -42,6 +46,11 @@ public class CapabilitiesBundleIT extends 
CapabilitiesTestSupport {
     
     private Bundle testBundle;
 
+    private static class TestCapabilitiesSource implements CapabilitiesSource {
+        public String getNamespace() { return null; }
+        public Map<String, Object> getCapabilities() { return null; }
+    };
+
     @Before
     public void setup() {
         final String symbolicName = "org.apache.sling.capabilities";
@@ -61,16 +70,28 @@ public class CapabilitiesBundleIT extends 
CapabilitiesTestSupport {
     }
     
     @Test
-    public void testRegisterSource() {
+    public void testRegisterSources() throws InvalidSyntaxException {
         // Verify that the bundle setup (exported packages) allows us to 
         // register a source from the outside
-        final CapabilitiesSource src = new CapabilitiesSource() {
-            public String getNamespace() { return null; }
-            public Map<String, Object> getCapabilities() { return null; }
-        };
+        final ServiceRegistration [] reg = new ServiceRegistration[3];
+        for(int i=0 ; i < reg.length; i++) {
+            reg[i] = 
bundleContext.registerService(CapabilitiesSource.class.getName(), new 
TestCapabilitiesSource(), null);
+            assertNotNull("Expecting ServiceRegistration", reg[i]);
+        }
         
-        final ServiceRegistration reg = 
bundleContext.registerService(CapabilitiesSource.class.getName(), src, null);
-        assertNotNull("Expecting ServiceRegistration", reg);
-        reg.unregister();
+        try {
+            // Now check that all sources are registered
+            // using toString() trick from CapabilitiesServlet
+            final String expected = reg.length + " CapabilitiesSource";
+            final ServiceReference[] refs =  
bundleContext.getServiceReferences(Servlet.class.getName(), 
"(sling.servlet.resourceTypes=sling/capabilities)");
+            assertTrue("Expecting a single Servlet service", refs != null && 
refs.length == 1);
+            final String str = bundleContext.getService(refs[0]).toString();
+            assertTrue("Expecting " + expected + " but got " + str, 
str.contains(expected));
+            bundleContext.ungetService(refs[0]);
+        } finally {
+            for(int i=0 ; i < reg.length; i++) {
+                reg[i].unregister();
+            }
+        }
     }
 }

Reply via email to