package org.cloudfoundry.identity.uaa.impl.config;
import org.cloudfoundry.identity.uaa.constants.OriginKeys;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
public class ScimExternalGroupsTypeResolvingFactoryBeanTest {
@Test
public void resultingExternalGroupsMap_withExternalGroupExtraSpaces() throws Exception {
List<String> internalToExternalGroups = Arrays.asList("acme| cn=Engineering,ou=groups,dc=example,dc=com cn=HR,ou=groups,dc=example,dc=com cn=mgmt,ou=groups,dc=example,dc=com ",
"acme.dev|cn=Engineering,ou=groups,dc=example,dc=com ");
ScimExternalGroupsTypeResolvingFactoryBean scimExternalGroupsTypeResolvingFactoryBean = new ScimExternalGroupsTypeResolvingFactoryBean(internalToExternalGroups);
Map<String, Map<String, List>> externalGroups = scimExternalGroupsTypeResolvingFactoryBean.getExternalGroups();
assertThat(externalGroups.keySet(), containsInAnyOrder(OriginKeys.LDAP));
assertThat(externalGroups.get(OriginKeys.LDAP).keySet(),
containsInAnyOrder("cn=Engineering,ou=groups,dc=example,dc=com", "cn=HR,ou=groups,dc=example,dc=com", "cn=mgmt,ou=groups,dc=example,dc=com"));
}
@Test
public void canAddExternalGroupsWithOrigin() throws Exception {
List<String> internalToExternalGroups = Arrays.asList("acme|cn=Engineering,ou=groups,dc=example,dc=com cn=HR,ou=groups,dc=example,dc=com cn=mgmt,ou=groups,dc=example,dc=com|uaa",
"acme.dev|cn=Engineering,ou=groups,dc=example,dc=com|uaa");
ScimExternalGroupsTypeResolvingFactoryBean scimExternalGroupsTypeResolvingFactoryBean = new ScimExternalGroupsTypeResolvingFactoryBean(internalToExternalGroups);
Map<String, Map<String, List>> externalGroups = scimExternalGroupsTypeResolvingFactoryBean.getExternalGroups();
assertThat(externalGroups.keySet(), containsInAnyOrder(OriginKeys.UAA));
}
@Test
public void cannotAddInternalGroupsThatMapToNothing() {
List<String> internalToExternalGroups = Arrays.asList("acme|", "acme.dev");
ScimExternalGroupsTypeResolvingFactoryBean scimExternalGroupsTypeResolvingFactoryBean = new ScimExternalGroupsTypeResolvingFactoryBean(internalToExternalGroups);
Map<String, Map<String, List>> externalGroups = scimExternalGroupsTypeResolvingFactoryBean.getExternalGroups();
assertThat(externalGroups.size(), is(0));
}
}