Adding tests to the bundle content loader healthcheck
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/hc/BundleContentLoadedCheck.java b/src/main/java/org/apache/sling/jcr/contentloader/hc/BundleContentLoadedCheck.java
index 2fe432b..17c855b 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/hc/BundleContentLoadedCheck.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/hc/BundleContentLoadedCheck.java
@@ -92,7 +92,7 @@
     private SlingRepository repository;
 
     @Activate
-    protected void activate(BundleContext bundleContext, Config config) {
+    public void activate(BundleContext bundleContext, Config config) {
         this.bundleContext = bundleContext;
         this.includesRegex = Pattern.compile(config.includesRegex());
         String excludesRegex2 = config.excludesRegex();
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java
index a985701..44f6571 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoaderTest.java
@@ -67,7 +67,7 @@
     @Test
     public void loadContentWithSpecificPath() throws Exception {
 
-        Bundle mockBundle = newBundleWithInitialContent("SLING-INF/libs/app;path:=/libs/app");
+        Bundle mockBundle = newBundleWithInitialContent(context, "SLING-INF/libs/app;path:=/libs/app");
 
         contentLoader.registerBundle(context.resourceResolver().adaptTo(Session.class), mockBundle, false);
 
@@ -80,7 +80,7 @@
     @Test
     public void loadContentWithRootPath() throws Exception {
 
-        Bundle mockBundle = newBundleWithInitialContent("SLING-INF/");
+        Bundle mockBundle = newBundleWithInitialContent(context, "SLING-INF/");
 
         contentLoader.registerBundle(context.resourceResolver().adaptTo(Session.class), mockBundle, false);
 
@@ -96,7 +96,7 @@
 
         dumpRepo("/", 2);
 
-        Bundle mockBundle = newBundleWithInitialContent("SLING-INF/libs/app;path:=/libs/app;ignoreImportProviders:=xml");
+        Bundle mockBundle = newBundleWithInitialContent(context, "SLING-INF/libs/app;path:=/libs/app;ignoreImportProviders:=xml");
 
         contentLoader.registerBundle(context.resourceResolver().adaptTo(Session.class), mockBundle, false);
 
@@ -113,8 +113,7 @@
 
     }
 
-    private MockBundle newBundleWithInitialContent(String initialContentHeader) {
-
+    public static MockBundle newBundleWithInitialContent(SlingContext context, String initialContentHeader) {
         MockBundle mockBundle = new MockBundle(context.bundleContext());
         mockBundle.setHeaders(singletonMap("Sling-Initial-Content", initialContentHeader));
         return mockBundle;
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/hc/BundleContentLoadedCheckTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/hc/BundleContentLoadedCheckTest.java
new file mode 100644
index 0000000..b85e746
--- /dev/null
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/hc/BundleContentLoadedCheckTest.java
@@ -0,0 +1,139 @@
+/*
+ * 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.jcr.contentloader.internal.hc;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.lang.annotation.Annotation;
+
+import javax.jcr.Session;
+
+import org.apache.felix.hc.api.Result;
+import org.apache.sling.jcr.contentloader.hc.BundleContentLoadedCheck;
+import org.apache.sling.jcr.contentloader.hc.BundleContentLoadedCheck.Config;
+import org.apache.sling.jcr.contentloader.internal.BundleContentLoader;
+import org.apache.sling.jcr.contentloader.internal.BundleContentLoaderTest;
+import org.apache.sling.jcr.contentloader.internal.BundleHelper;
+import org.apache.sling.jcr.contentloader.internal.ContentLoaderService;
+import org.apache.sling.jcr.contentloader.internal.ContentReaderWhiteboard;
+import org.apache.sling.jcr.contentloader.internal.readers.JsonReader;
+import org.apache.sling.jcr.contentloader.internal.readers.XmlReader;
+import org.apache.sling.jcr.contentloader.internal.readers.ZipReader;
+import org.apache.sling.testing.mock.osgi.MockBundle;
+import org.apache.sling.testing.mock.sling.ResourceResolverType;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+public class BundleContentLoadedCheckTest {
+
+    @Rule
+    public final SlingContext context = new SlingContext(ResourceResolverType.JCR_OAK);
+    private MockBundle bundle;
+    private Mockery mock = new Mockery();
+    private BundleContentLoader contentLoader;
+    private BundleContentLoadedCheck check;
+
+    @Before
+    public void setup() {
+        bundle = BundleContentLoaderTest.newBundleWithInitialContent(context, "SLING-INF/libs/app;path:=/libs/app");
+
+        // prepare content readers
+        context.registerInjectActivateService(new JsonReader());
+        context.registerInjectActivateService(new XmlReader());
+        context.registerInjectActivateService(new ZipReader());
+
+        // whiteboard which holds readers
+        context.registerInjectActivateService(new ContentReaderWhiteboard());
+
+        // register the content loader service
+        BundleHelper bundleHelper = context.registerInjectActivateService(new ContentLoaderService());
+
+        ContentReaderWhiteboard whiteboard = context.getService(ContentReaderWhiteboard.class);
+
+        contentLoader = new BundleContentLoader(bundleHelper, whiteboard);
+
+        BundleContext bundleContext = mock.mock(BundleContext.class);
+        mock.checking(new Expectations() {
+            {
+                oneOf(bundleContext).getBundles();
+                will(returnValue(new Bundle[] { bundle }));
+            }
+        });
+        check = context.registerInjectActivateService(new BundleContentLoadedCheck());
+        check.activate(bundleContext, new Config() {
+
+            @Override
+            public Class<? extends Annotation> annotationType() {
+                return null;
+            }
+
+            @Override
+            public String hc_name() {
+                return "Unity";
+            }
+
+            @Override
+            public String[] hc_tags() {
+                return new String[] { "test" };
+            }
+
+            @Override
+            public String includesRegex() {
+                return ".*";
+            }
+
+            @Override
+            public String excludesRegex() {
+                return "";
+            }
+
+            @Override
+            public boolean useCriticalForNotLoaded() {
+                return false;
+            }
+
+            @Override
+            public String webconsole_configurationFactory_nameHint() {
+                return null;
+            }
+
+        });
+    }
+
+    @Test
+    public void testNotInstalled() {
+        Result result = check.execute();
+        assertFalse(result.isOk());
+    }
+
+    @Test
+    public void testInstalled() {
+        contentLoader.registerBundle(context.resourceResolver().adaptTo(Session.class), bundle, false);
+        Result result = check.execute();
+        assertTrue(result.isOk());
+    }
+
+}