Add a test for required ids
diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
index ac53394..20d6073 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
@@ -184,7 +184,7 @@
executorService.shutdown();
}
- private void restartAllActiveServiceUserMappedServices() {
+ void restartAllActiveServiceUserMappedServices() {
RegistrationSet registrationSet = new RegistrationSet();
registrationSet.removed = activeRegistrations.values();
registrationSet.added = activeRegistrations.values();
@@ -482,7 +482,7 @@
return this.defaultUser;
}
- private boolean isValidUser(final String userId, final String serviceName, final String subServiceName, boolean require) {
+ boolean isValidUser(final String userId, final String serviceName, final String subServiceName, boolean require) {
if (userId == null) {
log.debug("isValidUser: userId is null -> invalid");
return false;
@@ -508,7 +508,7 @@
}
}
- private boolean areValidPrincipals(final Iterable<String> principalNames, final String serviceName, final String subServiceName, boolean require) {
+ boolean areValidPrincipals(final Iterable<String> principalNames, final String serviceName, final String subServiceName, boolean require) {
if (principalNames == null) {
log.debug("areValidPrincipals: principalNames are null -> invalid");
return false;
diff --git a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
index 98a556a..a392b41 100644
--- a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
+++ b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
@@ -20,7 +20,7 @@
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertNull;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -31,7 +31,6 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutorService;
@@ -39,6 +38,7 @@
import java.util.stream.StreamSupport;
import org.apache.sling.serviceusermapping.ServicePrincipalsValidator;
+import org.apache.sling.serviceusermapping.ServiceUserMapper;
import org.apache.sling.serviceusermapping.ServiceUserValidator;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
@@ -102,6 +102,62 @@
}
@Test
+ public void test_requiredValidators() {
+ ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+ when(config.require_validation()).thenReturn(true);
+ when(config.required_validators()).thenReturn(new String[] {"bla","bli","blub"});
+
+ final ServiceUserMapperImpl mapper = new ServiceUserMapperImpl(null, config) {
+ @Override
+ void restartAllActiveServiceUserMappedServices() {
+ throw new IllegalStateException();
+ }
+ };
+ ServiceUserValidator userValidator = mock(ServiceUserValidator.class);
+ ServicePrincipalsValidator principalsValidator1 = mock(ServicePrincipalsValidator.class);
+ ServicePrincipalsValidator principalsValidator2 = mock(ServicePrincipalsValidator.class);
+
+ assertTrue(mapper.isValidUser("org", "foo", "bar", false));
+ assertFalse(mapper.isValidUser("org", "foo", "bar", true));
+
+ assertTrue(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
+ assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+
+ Map<String, Object> properties = new HashMap<>();
+ properties.put(ServiceUserMapper.VALIDATOR_ID, "bla");
+ mapper.bindServiceUserValidator(userValidator, properties);
+
+ assertTrue(mapper.isValidUser("org", "foo", "bar", false));
+ assertFalse(mapper.isValidUser("org", "foo", "bar", true));
+
+ assertTrue(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
+ assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+
+ properties.put(ServiceUserMapper.VALIDATOR_ID, "bli");
+ mapper.bindServicePrincipalsValidator(principalsValidator2, properties);
+
+ assertTrue(mapper.isValidUser("org", "foo", "bar", false));
+ assertFalse(mapper.isValidUser("org", "foo", "bar", true));
+
+ assertTrue(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
+ assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+
+ properties.put(ServiceUserMapper.VALIDATOR_ID, "blub");
+ try {
+ mapper.bindServicePrincipalsValidator(principalsValidator1, properties);
+ fail();
+ } catch (IllegalStateException e) {
+ // Expected;
+ }
+
+ assertFalse(mapper.isValidUser("org", "foo", "bar", false));
+ assertFalse(mapper.isValidUser("org", "foo", "bar", true));
+
+ assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", false));
+ assertFalse(mapper.areValidPrincipals(Arrays.asList("baz"), "org", "foo", true));
+ }
+
+ @Test
public void test_getServiceUserID() {
ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
when(config.user_mapping()).thenReturn(new String[] {