package modify; import junit.framework.TestCase; import netscape.ldap.LDAPAttribute; import netscape.ldap.LDAPAttributeSet; import netscape.ldap.LDAPConnection; import netscape.ldap.LDAPEntry; import netscape.ldap.LDAPException; import netscape.ldap.LDAPModification; /** * If one tries to add an attribute without any value, an (illegal) attribute * with empty value is created. Test case for issue DIRSERVER-630 */ public class IllegalModificationTest extends TestCase { static final String DN = "cn=Kate Bush,dc=example,dc=com"; static final String USER = "uid=admin,ou=system"; static final String PASSWORD = "secret"; static final String HOST = "localhost"; static final int PORT = 10389; private LDAPConnection con = null; protected void setUp() throws LDAPException { con = new LDAPConnection(); con.connect(3, HOST, PORT, USER, PASSWORD); // Create a person entry LDAPAttributeSet attrs = new LDAPAttributeSet(); attrs.add(new LDAPAttribute("sn", "Bush")); attrs.add(new LDAPAttribute("cn", "Kate Bush")); LDAPAttribute oc = new LDAPAttribute("objectClass"); oc.addValue("top"); oc.addValue("person"); attrs.add(oc); LDAPEntry entry = new LDAPEntry(DN, attrs); con.add(entry); } protected void tearDown() throws LDAPException { // Remove the person entry and disconnect con.delete(DN); con.disconnect(); } public void testIllegalModification() throws LDAPException { LDAPAttribute attr = new LDAPAttribute("description"); LDAPModification mod = new LDAPModification(LDAPModification.ADD, attr); try { con.modify("cn=Kate Bush,dc=example,dc=com", mod); fail("error expected due to empty attribute value"); } catch (LDAPException e) { // expected } // Check whether entry is unmodified, i.e. no description LDAPEntry entry = con.read(DN); System.err.println(entry); assertEquals("description exists?", null, entry.getAttribute("description")); } }