diff --git a/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitSecurityIT.java b/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitAccessmanagerIT.java
similarity index 82%
rename from src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitSecurityIT.java
rename to src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitAccessmanagerIT.java
index e201b8e..f33498f 100644
--- a/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitSecurityIT.java
+++ b/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitAccessmanagerIT.java
@@ -34,12 +34,12 @@
 
 @RunWith(PaxExam.class)
 @ExamReactorStrategy(PerClass.class)
-public class SlingJcrJackrabbitSecurityIT extends KarafTestSupport {
+public class SlingJcrJackrabbitAccessmanagerIT extends KarafTestSupport {
 
     @Configuration
     public Option[] configuration() {
         return OptionUtils.combine(baseConfiguration(),
-            addSlingFeatures("sling-jcr-jackrabbit-security"),
+            addSlingFeatures("sling-jcr-jackrabbit-accessmanager"),
             addFelixHttpFeature()
         );
     }
@@ -51,11 +51,4 @@
         assertEquals(Bundle.ACTIVE, bundle.getState());
     }
 
-    @Test
-    public void testOrgApacheSlingJcrJackrabbitUsermanager() {
-        final Bundle bundle = findBundle("org.apache.sling.jcr.jackrabbit.usermanager");
-        assertNotNull(bundle);
-        assertEquals(Bundle.ACTIVE, bundle.getState());
-    }
-
 }
diff --git a/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitSecurityIT.java b/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitUsermanagerIT.java
similarity index 82%
copy from src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitSecurityIT.java
copy to src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitUsermanagerIT.java
index e201b8e..80b4ea9 100644
--- a/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitSecurityIT.java
+++ b/src/test/java/org/apache/sling/karaf/tests/bootstrap/SlingJcrJackrabbitUsermanagerIT.java
@@ -34,24 +34,17 @@
 
 @RunWith(PaxExam.class)
 @ExamReactorStrategy(PerClass.class)
-public class SlingJcrJackrabbitSecurityIT extends KarafTestSupport {
+public class SlingJcrJackrabbitUsermanagerIT extends KarafTestSupport {
 
     @Configuration
     public Option[] configuration() {
         return OptionUtils.combine(baseConfiguration(),
-            addSlingFeatures("sling-jcr-jackrabbit-security"),
+            addSlingFeatures("sling-jcr-jackrabbit-usermanager"),
             addFelixHttpFeature()
         );
     }
 
     @Test
-    public void testOrgApacheSlingJcrJackrabbitAccessmanager() {
-        final Bundle bundle = findBundle("org.apache.sling.jcr.jackrabbit.accessmanager");
-        assertNotNull(bundle);
-        assertEquals(Bundle.ACTIVE, bundle.getState());
-    }
-
-    @Test
     public void testOrgApacheSlingJcrJackrabbitUsermanager() {
         final Bundle bundle = findBundle("org.apache.sling.jcr.jackrabbit.usermanager");
         assertNotNull(bundle);
