mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

coulbeck
19.03.2006 087d073b1216dadebdfe2364ff7f222d20b86808
Expand coverage of SearchResultEntryProtocolOp.
2 files modified
138 ■■■■■ changed files
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/LdapTestCase.java 48 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java 90 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/LdapTestCase.java
@@ -29,10 +29,52 @@
import org.opends.server.DirectoryServerTestCase;
import org.testng.annotations.Test;
import java.util.LinkedList;
import java.util.ListIterator;
/**
 * An abstract class that all types  unit test should extend.
 * An abstract class that all types  unit test should extend.
 */
@Test(groups = { "precommit", "ldap" })
public abstract class LdapTestCase extends DirectoryServerTestCase
{}
public abstract class LdapTestCase extends DirectoryServerTestCase
{
  /**
   * Determine whether one LDAPAttribute is equal to another.
   * The values of the attribute must be identical and in the same order.
   * @param a1 The first LDAPAttribute.
   * @param a2 The second LDAPAttribute.
   * @return true if the first LDAPAttribute is equal to the second.
   */
  static boolean testEqual(LDAPAttribute a1, LDAPAttribute a2)
  {
    if (!a1.getAttributeType().equals(a2.getAttributeType()))
    {
      return false;
    }
    return a1.getValues().equals(a2.getValues());
  }
  /**
   * Determine whether one list of LDAPAttribute is equal to another.
   * @param list1 The first list of LDAPAttribute.
   * @param list2 The second list of LDAPAttribute.
   * @return true if the first list of LDAPAttribute is equal to the second.
   */
  static boolean testEqual(LinkedList<LDAPAttribute> list1,
                           LinkedList<LDAPAttribute> list2)
  {
    ListIterator<LDAPAttribute> e1 = list1.listIterator();
    ListIterator<LDAPAttribute> e2 = list2.listIterator();
    while(e1.hasNext() && e2.hasNext()) {
      LDAPAttribute o1 = e1.next();
      LDAPAttribute o2 = e2.next();
      if (!(o1==null ? o2==null : testEqual(o1, o2)))
        return false;
    }
    return !(e1.hasNext() || e2.hasNext());
  }
}
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java
@@ -31,12 +31,15 @@
import org.opends.server.types.Entry;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.TestCaseUtils;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
import org.opends.server.protocols.asn1.*;
import static org.opends.server.protocols.ldap.LDAPConstants.
     OP_TYPE_SEARCH_RESULT_ENTRY;
import static org.testng.Assert.*;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import java.util.ArrayList;
public class TestSearchResultEntryProtocolOp extends LdapTestCase
{
@@ -52,7 +55,10 @@
    return new Object[][] {
         {
              TestCaseUtils.makeEntry(
                   "dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz",
                   "dn: cn=This is an extremely long relative distinguished " +
                        "name that does not fit in two line of eighty " +
                        "columns each.  It is intended to exercise the LDIF " +
                        "line wrapping code.,o=airius",
                   "userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM=",
                   "objectclass: top",
                   "objectclass: person",
@@ -109,7 +115,6 @@
  }
  /**
   * Test that going from SearchResultEntry to SearchResultEntryProtocolOp
   * and back again preserves the entry contents.
@@ -120,9 +125,8 @@
  @Test(dataProvider = "entries")
  public void testEntryTransformation(Entry from) throws Exception
  {
    SearchResultEntry searchResultEntry = new SearchResultEntry(from);
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(searchResultEntry);
         new SearchResultEntryProtocolOp(new SearchResultEntry(from));
    Entry to = protocolOp.toSearchResultEntry();
    // FIXME Issue 660: Need to provide Entry.equals(Object)
@@ -142,9 +146,8 @@
  public void testToLdif(Entry from) throws Exception
  {
    int wrapColumn = 80;
    SearchResultEntry searchResultEntry = new SearchResultEntry(from);
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(searchResultEntry);
         new SearchResultEntryProtocolOp(new SearchResultEntry(from));
    StringBuilder builder = new StringBuilder();
    protocolOp.toLDIF(builder, wrapColumn);
    Entry to = TestCaseUtils.entryFromLdifString(builder.toString());
@@ -157,9 +160,8 @@
  public void testToLdifWrapping(Entry from) throws Exception
  {
    int wrapColumn = 78;
    SearchResultEntry searchResultEntry = new SearchResultEntry(from);
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(searchResultEntry);
         new SearchResultEntryProtocolOp(new SearchResultEntry(from));
    StringBuilder builder = new StringBuilder();
    protocolOp.toLDIF(builder, wrapColumn);
@@ -179,4 +181,72 @@
    // FIXME Issue 660: Need to provide Entry.equals(Object)
//    assertEquals(to, from);
  }
  @Test(dataProvider = "entries")
  public void testToString(Entry entry) throws Exception
  {
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(new SearchResultEntry(entry));
    StringBuilder sb = new StringBuilder();
    protocolOp.toString();
    protocolOp.toString(sb, 1);
  }
  @Test(dataProvider = "entries")
  public void testEncodeDecode(Entry entry) throws Exception
  {
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(new SearchResultEntry(entry));
    // Encode to ASN1.
    ASN1Element element = protocolOp.encode();
    // Decode to a new protocol op.
    SearchResultEntryProtocolOp decodedProtocolOp =
         (SearchResultEntryProtocolOp)ProtocolOp.decode(element);
    assertEquals(decodedProtocolOp.getDN(), protocolOp.getDN());
    assertTrue(testEqual(decodedProtocolOp.getAttributes(),
                         protocolOp.getAttributes()));
  }
  @Test (expectedExceptions = LDAPException.class)
  public void testInvalidSequence() throws Exception
  {
    ProtocolOp.decode(new ASN1Integer(OP_TYPE_SEARCH_RESULT_ENTRY, 0));
  }
  @Test (dataProvider = "entries", expectedExceptions = LDAPException.class)
  public void testTooManyElements(Entry entry) throws Exception
  {
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(new SearchResultEntry(entry));
    ASN1Element element = protocolOp.encode();
    ArrayList<ASN1Element> elements = ((ASN1Sequence)element).elements();
    elements.add(new ASN1Boolean(true));
    ProtocolOp.decode(new ASN1Sequence(OP_TYPE_SEARCH_RESULT_ENTRY, elements));
  }
  @Test (dataProvider = "entries", expectedExceptions = LDAPException.class)
  public void testTooFewElements(Entry entry) throws Exception
  {
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(new SearchResultEntry(entry));
    ASN1Element element = protocolOp.encode();
    ArrayList<ASN1Element> elements = ((ASN1Sequence)element).elements();
    elements.remove(0);
    ProtocolOp.decode(new ASN1Sequence(OP_TYPE_SEARCH_RESULT_ENTRY, elements));
  }
  @Test (dataProvider = "entries", expectedExceptions = LDAPException.class)
  public void testInvalidElement1(Entry entry) throws Exception
  {
    SearchResultEntryProtocolOp protocolOp =
         new SearchResultEntryProtocolOp(new SearchResultEntry(entry));
    ASN1Element element = protocolOp.encode();
    ArrayList<ASN1Element> elements = ((ASN1Sequence)element).elements();
    elements.set(1, new ASN1OctetString("cn"));
    ProtocolOp.decode(new ASN1Sequence(OP_TYPE_SEARCH_RESULT_ENTRY, elements));
  }
}