Merge pull request #377 from eddumelendez/gh-375

Fix DirContextAdapter when adding Name attributes
This commit is contained in:
Rob Winch
2016-02-15 08:10:42 -06:00
2 changed files with 23 additions and 0 deletions

View File

@@ -26,6 +26,7 @@ import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapName;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
@@ -165,6 +166,8 @@ public final class NameAwareAttribute implements Attribute {
throw new IllegalArgumentException("This instance has values that are not valid distinguished names; " +
"cannot handle Name values", e);
}
} else if (value instanceof LdapName) {
newValuesAsNames.put((LdapName) value, value.toString());
} else {
throw new IllegalArgumentException("This instance has non-string attribute values; " +
"cannot handle Name values");

View File

@@ -367,6 +367,26 @@ public class DirContextAdapterTest {
assertEquals("123", attribute.get());
}
@Test
public void testNewLdapNameWithString() throws NamingException {
tested.addAttributeValue("member", LdapUtils.newLdapName("CN=test,DC=root"));
tested.addAttributeValue("member2", LdapUtils.newLdapName("CN=test2,DC=root"));
Attributes attrs = tested.getAttributes();
assertEquals(LdapUtils.newLdapName("CN=test,DC=root"), attrs.get("member").get());
assertEquals(LdapUtils.newLdapName("CN=test2,DC=root"), attrs.get("member2").get());
}
@Test
public void testNewLdapNameWithLdapName() throws NamingException {
tested.addAttributeValue("member", "CN=test,DC=root");
tested.addAttributeValue("member2", LdapUtils.newLdapName("CN=test2,DC=root"));
Attributes attrs = tested.getAttributes();
assertEquals("CN=test,DC=root", attrs.get("member").get());
assertEquals(LdapUtils.newLdapName("CN=test2,DC=root"), attrs.get("member2").get());
}
@Test
public void testRemoveAttributeValueAttributeDoesntExist() {
// Perform test