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

lutoff
02.26.2006 e6766f00df05fa9f7a8762d55bb24a3a87265cff
Add Unit-test for 'EntryChangeNotificationControl'
2 files modified
201 ■■■■■ changed files
opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ControlsTestCase.java 1 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java 200 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ControlsTestCase.java
@@ -49,6 +49,7 @@
  public void setUp() throws Exception
  {
    // This test suite depends on having the schema available.
    TestCaseUtils.startServer();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java
@@ -35,13 +35,11 @@
import org.testng.annotations.Test;
import static org.opends.server.util.ServerConstants.OID_NS_PASSWORD_EXPIRED;
import static org.opends.server.util.ServerConstants.OID_NS_PASSWORD_EXPIRING;
import static org.opends.server.util.ServerConstants.OID_PASSWORD_POLICY_CONTROL;
import static org.testng.Assert.*;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.ldap.LDAPException;
import org.opends.server.types.Control;
import org.opends.server.types.DN;
/**
 * Test ChangeNumber and ChangeNumberGenerator
@@ -241,7 +239,7 @@
   * Test PersistentSearchControl
   */
  @Test(dataProvider = "persistentSearchControl")
  public void CheckPersistentSearchControlTest(
  public void checkPersistentSearchControlTest(
      String oid, boolean isCritical, boolean changesOnly, boolean returnECs)
      throws Exception
  {
@@ -352,6 +350,200 @@
      }
 
    }
  }
      
  /**
   * Create values for EntryChangeNotificationControl
   */
  @DataProvider(name = "entryChangeNotificationControl")
  public Object[][] createEntryChangeNotificationControlData()
  {
    return new Object[][]
    {
    { OID_NS_PASSWORD_EXPIRED, true, 1, "cn=test" },
    { OID_NS_PASSWORD_EXPIRED, false, 2, "dc=example,dc=com" },
    { OID_PERSISTENT_SEARCH, true, 3, "cn=test, dc=example,dc=com" },
    { OID_PERSISTENT_SEARCH, false, 4, "cn= new test, dc=example,dc=com" } };
  }
  /**
   * Test EntryChangeNotificationControl
   */
  @Test(dataProvider = "entryChangeNotificationControl")
  public void checkEntryChangeNotificationControlTest(
      String oid, boolean isCritical, long changeNumber, String dnString)
      throws Exception
  {
    // Test contructor EntryChangeNotificationControl
    // (PersistentSearchChangeType changeType,long changeNumber)
    PersistentSearchChangeType[] types = PersistentSearchChangeType.values();
    EntryChangeNotificationControl ecnc = null ;
    EntryChangeNotificationControl newEcnc ;
    for (PersistentSearchChangeType type : types)
    {
      ecnc = new EntryChangeNotificationControl(type, changeNumber);
      assertNotNull(ecnc);
      assertEquals(OID_ENTRY_CHANGE_NOTIFICATION, ecnc.getOID());
      assertEquals(changeNumber, ecnc.getChangeNumber());
      assertEquals(type, ecnc.getChangeType());
      assertNull(ecnc.getPreviousDN()) ;
      assertEquals(false, ecnc.isCritical()) ;
      checkEntryChangeNotificationControlToString(ecnc);
      // also check encode
      try
      {
        newEcnc = EntryChangeNotificationControl.decodeControl(ecnc);
        assertNotNull(newEcnc);
        assertEquals(ecnc.getOID(), newEcnc.getOID());
        assertEquals(ecnc.getChangeNumber(), newEcnc.getChangeNumber());
        assertEquals(ecnc.getChangeType(), newEcnc.getChangeType());
        assertNull(newEcnc.getPreviousDN());
        assertEquals(ecnc.isCritical(), newEcnc.isCritical());
      }
      catch (LDAPException e)
      {
        if (type.compareTo(PersistentSearchChangeType.MODIFY_DN) == 0)
        {
          assertTrue(true,"could decode a control with previousDN=null " +
              "and type=modDN");
        }
        else
        {
          assertTrue(false,"could decode a control with previousDN=null " +
          "and type=modDN");
        }
      }
    }
    // Test contructor EntryChangeNotificationControl
    // (PersistentSearchChangeType changeType, DN previousDN, long
    // changeNumber)
    DN dn = DN.decode(dnString);
    for (PersistentSearchChangeType type : types)
    {
      ecnc = new EntryChangeNotificationControl(type, dn, changeNumber);
      assertNotNull(ecnc);
      assertEquals(OID_ENTRY_CHANGE_NOTIFICATION, ecnc.getOID());
      assertEquals(changeNumber, ecnc.getChangeNumber());
      assertEquals(type, ecnc.getChangeType());
      assertEquals(dn, ecnc.getPreviousDN());
      assertEquals(false, ecnc.isCritical()) ;
      checkEntryChangeNotificationControlToString(ecnc);
      // also check encode
      try
      {
        newEcnc = EntryChangeNotificationControl.decodeControl(ecnc);
        assertNotNull(newEcnc);
        assertEquals(ecnc.getOID(),newEcnc.getOID());
        assertEquals(ecnc.getChangeNumber(),newEcnc.getChangeNumber());
        assertEquals(ecnc.getChangeType(),newEcnc.getChangeType());
        assertEquals(ecnc.getPreviousDN(),newEcnc.getPreviousDN());
        assertEquals(ecnc.isCritical(),newEcnc.isCritical()) ;
      }
      catch (LDAPException e)
      {
        if (type.compareTo(PersistentSearchChangeType.MODIFY_DN) == 0)
        {
          assertTrue(false,"couldn't decode a control with previousDN " +
              "not null and type=modDN");
        }
        else
        {
          assertTrue(true,"couldn't decode a control with previousDN " +
          "not null and type=modDN");
        }
      }
    }
    // Test contructor EntryChangeNotificationControl(String oid, boolean
    // isCritical, PersistentSearchChangeType changeType,
    // DN previousDN, long changeNumber)
    for (PersistentSearchChangeType type : types)
    {
      ecnc = new EntryChangeNotificationControl(oid, isCritical, type, dn,
          changeNumber);
      assertNotNull(ecnc);
      assertEquals(oid, ecnc.getOID());
      assertEquals(changeNumber, ecnc.getChangeNumber());
      assertEquals(type, ecnc.getChangeType());
      assertEquals(dn, ecnc.getPreviousDN());
      assertEquals(isCritical, ecnc.isCritical()) ;
      checkEntryChangeNotificationControlToString(ecnc);
      // also check encode
      try
      {
        newEcnc = EntryChangeNotificationControl.decodeControl(ecnc);
        assertNotNull(newEcnc);
        assertEquals(ecnc.getOID(),newEcnc.getOID());
        assertEquals(ecnc.getChangeNumber(),newEcnc.getChangeNumber());
        assertEquals(ecnc.getChangeType(),newEcnc.getChangeType());
        assertEquals(ecnc.getPreviousDN(),newEcnc.getPreviousDN());
        assertEquals(ecnc.isCritical(),newEcnc.isCritical()) ;
      }
      catch (LDAPException e)
      {
        if (type.compareTo(PersistentSearchChangeType.MODIFY_DN) == 0)
        {
          assertTrue(false,"couldn't decode a control with previousDN " +
              "not null and type=modDN");
        }
        else
        {
          assertTrue(true,"couldn't decode a control with previousDN " +
          "not null and type=modDN");
        }
      }
    }
    // check setPreviousDN
    ecnc.setPreviousDN(null) ;
    assertNull(ecnc.getPreviousDN()) ;
    ecnc.setPreviousDN(dn) ;
    assertEquals(dn, ecnc.getPreviousDN());
    // Check setChangeNumber
    ecnc.setChangeNumber(changeNumber +1) ;
    assertEquals(changeNumber +1, ecnc.getChangeNumber());
    // Check setChangeType
    for (PersistentSearchChangeType type : types)
    {
      ecnc.setChangeType(type) ;
      assertEquals(type, ecnc.getChangeType());
    }
    // Check error on decode
    try
    {
      ecnc.setValue(null) ;
      newEcnc = EntryChangeNotificationControl.decodeControl(ecnc);
      assertTrue(false,"couldn't decode a control with null");
    }
    catch (LDAPException e)
    {
      assertTrue(true,"couldn't decode a control with null");
    }
  }
  private void checkEntryChangeNotificationControlToString(EntryChangeNotificationControl ecnc)
  {
    String toString ="EntryChangeNotificationControl(changeType=";
    toString = toString + ecnc.getChangeType();
    if (ecnc.getPreviousDN() != null)
    {
      toString = toString + ",previousDN=\"" + ecnc.getPreviousDN() + "\"" ;
    }
    if (ecnc.getChangeNumber() > 0)
    {
      toString = toString + ",changeNumber=" + ecnc.getChangeNumber() ;
    }
    toString = toString +")";
    assertEquals(toString, ecnc.toString());
  }
}