From 22094368c2865dcfb6daf8366425212b721a4657 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 05 Feb 2009 17:42:14 +0000
Subject: [PATCH] Merge ASN1 branch to trunk

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java |  199 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 130 insertions(+), 69 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java
index e4bcb6c..cae98e3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java
@@ -31,10 +31,11 @@
 import java.util.HashMap;
 import java.util.Set;
 
-import org.opends.server.protocols.asn1.ASN1Boolean;
-import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.types.Control;
-import org.opends.server.types.LDAPException;
+import org.opends.server.types.*;
+import org.opends.server.protocols.ldap.LDAPControl;
+import org.opends.server.protocols.ldap.LDAPReader;
+import org.opends.server.protocols.asn1.ASN1;
+import org.opends.server.protocols.asn1.ASN1Writer;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
@@ -199,17 +200,15 @@
   }
 
   /**
-   * Create values for PasswordControl
+   * Create values for PasswordExpiredControl
    */
-  @DataProvider(name = "passwordControlData")
+  @DataProvider(name = "passwordExpiredControlData")
   public Object[][] createPasswordExpiredControlData()
   {
 
     return new Object[][] {
-     { OID_NS_PASSWORD_EXPIRED, true , -1},
-     { OID_NS_PASSWORD_EXPIRED, false , 0},
-     { OID_NS_PASSWORD_EXPIRING, true,  1},
-     { OID_NS_PASSWORD_EXPIRING, false, 2},
+     { true },
+     { false },
     };
   }
 
@@ -227,9 +226,9 @@
   /**
    * Test "Netscape password expired control" implementation
    */
-  @Test(dataProvider = "passwordControlData")
+  @Test(dataProvider = "passwordExpiredControlData")
   public void passwordExpiredControlTest(
-      String oid, boolean isCritical, int sec) throws Exception
+      boolean isCritical) throws Exception
   {
     // Check default constructor
     PasswordExpiredControl pec = new PasswordExpiredControl();
@@ -238,26 +237,27 @@
     assertEquals(pec.getOID(),OID_NS_PASSWORD_EXPIRED);
 
     // Check constructor with oid and boolean
-    pec = new PasswordExpiredControl(oid, isCritical);
+    pec = new PasswordExpiredControl(isCritical);
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
-    assertEquals(pec.getOID(),oid);
+    assertEquals(pec.getOID(),OID_NS_PASSWORD_EXPIRED);
 
     // Check the decode
-    Control control = new Control(oid,isCritical);
-    pec = PasswordExpiredControl.decodeControl(control);
+    LDAPControl control = new LDAPControl(OID_NS_PASSWORD_EXPIRED,isCritical);
+    pec = PasswordExpiredControl.DECODER.decode(control.isCritical(), control.getValue());
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
-    assertEquals(pec.getOID(),oid);
+    assertEquals(pec.getOID(),OID_NS_PASSWORD_EXPIRED);
 
-    control.setValue(new ASN1Boolean(true).decodeAsOctetString());
+    control = new LDAPControl(OID_NS_PASSWORD_EXPIRED, isCritical,
+        ByteString.valueOf("value"));
     try
     {
-      pec = PasswordExpiredControl.decodeControl(control);
+      pec = PasswordExpiredControl.DECODER.decode(control.isCritical(), control.getValue());
       assertTrue(false,
           "should be allow to create a passwordExpiredControl with value");
     }
-    catch (LDAPException e)
+    catch (DirectoryException e)
     {
       // Normal case
       assertTrue(true,
@@ -266,14 +266,39 @@
 
     // Check toString
     assertEquals("PasswordExpiredControl()", pec.toString());
+
+    // Check encode
+    ByteStringBuilder bsb = new ByteStringBuilder();
+    ASN1Writer writer = ASN1.getWriter(bsb);
+    pec = new PasswordExpiredControl(isCritical);
+    pec.write(writer);
+    control = LDAPReader.readControl(ASN1.getReader(bsb));
+    PasswordExpiredControl newPec =
+        PasswordExpiredControl.DECODER.decode(control.isCritical(), control.getValue());
+    assertNotNull(newPec);
+    assertEquals(newPec.isCritical(), isCritical);
+    assertEquals(pec.getOID(),OID_NS_PASSWORD_EXPIRED);
+  }
+
+  /**
+   * Create values for PasswordControl
+   */
+  @DataProvider(name = "passwordExpiringControlData")
+  public Object[][] createPasswordExpiringControlData()
+  {
+
+    return new Object[][] {
+     { true,  1},
+     { false, 2},
+    };
   }
 
   /**
    * Test "Netscape password expired control" implementation
    */
-  @Test(dataProvider = "passwordControlData")
+  @Test(dataProvider = "passwordExpiringControlData")
   public void passwordExpiringControlTest(
-      String oid, boolean isCritical, int sec) throws Exception
+      boolean isCritical, int sec) throws Exception
   {
     // Check constructor with int
     PasswordExpiringControl pec = new PasswordExpiringControl(sec);
@@ -284,56 +309,74 @@
     assertEquals(pec.getSecondsUntilExpiration(), sec);
 
     // Check constructor with oid, boolean and int
-    pec = new PasswordExpiringControl(oid, isCritical, sec);
+    pec = new PasswordExpiringControl(isCritical, sec);
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
-    assertEquals(pec.getOID(),oid);
+    assertEquals(pec.getOID(),OID_NS_PASSWORD_EXPIRING);
     assertEquals(pec.getSecondsUntilExpiration(), sec);
 
     // Check the decode
-    Control control = new Control(oid,isCritical);
+    LDAPControl control = new LDAPControl(OID_NS_PASSWORD_EXPIRING,isCritical);
     try
     {
-      pec = PasswordExpiringControl.decodeControl(control);
+      pec = PasswordExpiringControl.DECODER.decode(control.isCritical(), control.getValue());
       assertTrue(false,
           "shouldn't be allow to create PasswordExpiringControl without value");
     }
-    catch (LDAPException e)
+    catch (DirectoryException e)
     {
       // Normal case
       assertTrue(true,
           "shouldn't be allow to create PasswordExpiringControl without value");
     }
 
-    control.setValue(new ASN1OctetString("invalid value"));
+    control = new LDAPControl(OID_NS_PASSWORD_EXPIRING, isCritical,
+        ByteString.valueOf("Wrong value"));
     try
     {
-      pec = PasswordExpiringControl.decodeControl(control);
+      pec = PasswordExpiringControl.DECODER.decode(control.isCritical(), control.getValue());
       assertTrue(false,
       "shouldn't be allow to create PasswordExpiringControl with a wrong value");
     }
-    catch (LDAPException e)
+    catch (DirectoryException e)
     {
       // Normal case
       assertTrue(true,
       "shouldn't be allow to create PasswordExpiringControl with a wrong value");
     }
 
-    pec = new PasswordExpiringControl(oid, isCritical, sec);
-    control= new Control(oid,isCritical,pec.getValue());
-    PasswordExpiringControl newPec = PasswordExpiringControl.decodeControl(control);
-    assertNotNull(newPec);
-    assertEquals(newPec.isCritical(), isCritical);
-    assertEquals(newPec.getOID(), oid);
-    assertEquals(newPec.getSecondsUntilExpiration(), sec);
+    // Check encode/decode
+    ByteStringBuilder bsb = new ByteStringBuilder();
+    ASN1Writer writer = ASN1.getWriter(bsb);
+    pec = new PasswordExpiringControl(isCritical, sec);
+    pec.write(writer);
+    control = LDAPReader.readControl(ASN1.getReader(bsb));
+    pec = PasswordExpiringControl.DECODER.decode(control.isCritical(), control.getValue());
+    assertNotNull(pec);
+    assertEquals(pec.isCritical(), isCritical);
+    assertEquals(pec.getOID(),OID_NS_PASSWORD_EXPIRING);
+    assertEquals(pec.getSecondsUntilExpiration(), sec);
+  }
+
+  /**
+   * Create values for PasswordControl
+   */
+  @DataProvider(name = "passwordPolicyRequestControlData")
+  public Object[][] createPasswordPolicyRequestControlData()
+  {
+
+    return new Object[][] {
+     { true},
+     { false},
+    };
   }
 
   /**
    * Test PasswordPolicyRequestControl
    */
-  @Test(dataProvider = "passwordControlData")
+  @Test(dataProvider = "passwordPolicyRequestControlData")
   public void passwordPolicyRequestControlTest(
-      String oid, boolean isCritical, int sec) throws Exception
+      boolean isCritical) throws Exception
   {
     // Check default constructor
     PasswordPolicyRequestControl pec = new PasswordPolicyRequestControl();
@@ -342,26 +385,32 @@
     assertEquals(pec.getOID(),OID_PASSWORD_POLICY_CONTROL);
 
     // Check constructor with oid and boolean
-    pec = new PasswordPolicyRequestControl(oid, isCritical);
+    pec = new PasswordPolicyRequestControl(isCritical);
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
-    assertEquals(pec.getOID(),oid);
+    assertEquals(pec.getOID(),OID_PASSWORD_POLICY_CONTROL);
 
-    // Check the decode
-    Control control = new Control(oid,isCritical);
-    pec = PasswordPolicyRequestControl.decodeControl(control);
+    // Check the encode/decode
+    ByteStringBuilder bsb = new ByteStringBuilder();
+    ASN1Writer writer = ASN1.getWriter(bsb);
+    pec = new PasswordPolicyRequestControl(isCritical);
+    pec.write(writer);
+    LDAPControl control = LDAPReader
+        .readControl(ASN1.getReader(bsb));
+    pec = PasswordPolicyRequestControl.DECODER.decode(control.isCritical(), control.getValue());
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
-    assertEquals(pec.getOID(),oid);
+    assertEquals(pec.getOID(),OID_PASSWORD_POLICY_CONTROL);
 
-    control.setValue(new ASN1Boolean(true).decodeAsOctetString());
+    control = new LDAPControl(OID_PASSWORD_POLICY_CONTROL,
+        isCritical, ByteString.valueOf("value"));
     try
     {
-      pec = PasswordPolicyRequestControl.decodeControl(control);
+      pec = PasswordPolicyRequestControl.DECODER.decode(control.isCritical(), control.getValue());
       assertTrue(false,
           "should be allow to create a PasswordPolicyRequestControl with value");
     }
-    catch (LDAPException e)
+    catch (DirectoryException e)
     {
       // Normal case
       assertTrue(true,
@@ -381,12 +430,10 @@
   {
 
     return new Object[][] {
-     { OID_PASSWORD_POLICY_CONTROL, true , -1},
-     { OID_PASSWORD_POLICY_CONTROL, false , -1},
-     { OID_PASSWORD_POLICY_CONTROL, true , 0},
-     { OID_PASSWORD_POLICY_CONTROL, false , 0},
-     { OID_NS_PASSWORD_EXPIRING, true,      1},
-     { OID_NS_PASSWORD_EXPIRING, false,     2}
+     { true , -1},
+     { false , -1},
+     { true , 0},
+     { false , 0}
     };
   }
 
@@ -395,7 +442,7 @@
    */
    @Test(dataProvider = "passwordPolicyResponseControl")
   public void passwordPolicyResponseControlTest(
-      String oid, boolean isCritical, int warningValue)
+      boolean isCritical, int warningValue)
       throws Exception
   {
     // Check default constructor
@@ -420,6 +467,7 @@
         assertEquals(warningType, pprc.getWarningType());
         assertEquals(errorType, pprc.getErrorType());
         assertEquals(pprc.getWarningValue(),warningValue);
+        assertEquals(pprc.getOID(), OID_PASSWORD_POLICY_CONTROL);
       }
     }
 
@@ -433,30 +481,37 @@
       for (PasswordPolicyWarningType warningType : PasswordPolicyWarningType
           .values())
       {
-        pprc = new PasswordPolicyResponseControl(oid, isCritical,
+        pprc = new PasswordPolicyResponseControl(isCritical,
             warningType, warningValue, errorType);
         assertNotNull(pprc);
         assertEquals(warningType, pprc.getWarningType());
         assertEquals(errorType, pprc.getErrorType());
         assertEquals(pprc.getWarningValue(), warningValue);
+        assertEquals(pprc.getOID(), OID_PASSWORD_POLICY_CONTROL);
       }
     }
 
 
-    // check decode
-    Control control ;
+    // check encode/decode
+    PasswordPolicyResponseControl control ;
+    ByteStringBuilder bsb = new ByteStringBuilder();
+    ASN1Writer writer = ASN1.getWriter(bsb);
     for (PasswordPolicyErrorType errorType : PasswordPolicyErrorType.values())
     {
       for (PasswordPolicyWarningType warningType : PasswordPolicyWarningType
           .values())
       {
-        control = new PasswordPolicyResponseControl(oid, isCritical,
+        bsb.clear();
+        control = new PasswordPolicyResponseControl(isCritical,
             warningType, warningValue, errorType);
-        pprc = PasswordPolicyResponseControl.decodeControl(control);
+        control.write(writer);
+        LDAPControl c = LDAPReader.readControl(ASN1.getReader(bsb));
+        pprc = PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), c.getValue());
         assertNotNull(pprc);
         assertEquals(warningType, pprc.getWarningType());
         assertEquals(errorType, pprc.getErrorType());
         assertEquals(pprc.getWarningValue(), warningValue);
+        assertEquals(pprc.getOID(), OID_PASSWORD_POLICY_CONTROL);
 
         // check to String
         String toString =
@@ -473,11 +528,11 @@
         // check null value for the control
         try
         {
-          control.setValue(null);
-          pprc = PasswordPolicyResponseControl.decodeControl(control);
+          c = new LDAPControl(OID_PASSWORD_POLICY_CONTROL, isCritical);
+          pprc = PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), c.getValue());
           assertTrue(false,"the control should have a value");
         }
-        catch (LDAPException e)
+        catch (DirectoryException e)
         {
           // normal case
           assertTrue(true,"the control should have a value");
@@ -485,27 +540,33 @@
 
 
         // check null warning type
-        control = new PasswordPolicyResponseControl(oid, isCritical,
+        bsb.clear();
+        control = new PasswordPolicyResponseControl(isCritical,
             null, warningValue, errorType);
+        control.write(writer);
+        c = LDAPReader.readControl(ASN1.getReader(bsb));
         try
         {
-          pprc = PasswordPolicyResponseControl.decodeControl(control);
+          pprc = PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), c.getValue());
           assertNull(pprc.getWarningType());
         }
-        catch (LDAPException e)
+        catch (DirectoryException e)
         {
           assertTrue(false,"We should be able to decode the control");
         }
 
         // check null error type
-        control = new PasswordPolicyResponseControl(oid, isCritical,
+        bsb.clear();
+        control = new PasswordPolicyResponseControl(isCritical,
             warningType, warningValue, null);
+        control.write(writer);
+        c = LDAPReader.readControl(ASN1.getReader(bsb));
         try
         {
-          pprc = PasswordPolicyResponseControl.decodeControl(control);
+          pprc = PasswordPolicyResponseControl.DECODER.decode(c.isCritical(), c.getValue());
           assertNull(pprc.getErrorType());
         }
-        catch (LDAPException e)
+        catch (DirectoryException e)
         {
           assertTrue(false,"We should be able to decode the control");
         }

--
Gitblit v1.10.0