From 8e5f49c8e7505710e9b1f5167ee1ab37aac2a1ba Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 10 Apr 2009 20:15:06 +0000
Subject: [PATCH] Add test-case for issue 3638 - disabled until fix is provided.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java |  119 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 78 insertions(+), 41 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
index 82bbea5..e4e89f0 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.core;
 
@@ -30,6 +30,7 @@
 
 import java.net.Socket;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -39,8 +40,6 @@
 import org.opends.server.plugins.DisconnectClientPlugin;
 import org.opends.server.plugins.InvocationCounterPlugin;
 import org.opends.server.plugins.ShortCircuitPlugin;
-import org.opends.server.protocols.asn1.ASN1Reader;
-import org.opends.server.protocols.asn1.ASN1Writer;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.ldap.*;
 import org.opends.server.tools.LDAPSearch;
@@ -79,45 +78,45 @@
 
     BindOperation[] simpleBinds = new BindOperation[]
     {
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", ByteString.empty(),
                         ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", ByteString.empty(),
                         ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullOS, ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullOS, ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", ByteString.empty(), nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", ByteString.empty(), nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullOS, nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullOS, nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3",
                         ByteString.valueOf("cn=Directory Manager"),
                         ByteString.valueOf("password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", DN.nullDN(), ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", DN.nullDN(), ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullDN, ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullDN, ByteString.empty()),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", DN.nullDN(), nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", DN.nullDN(), nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullDN, nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullDN, nullOS),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", DN.decode("cn=Directory Manager"),
                         ByteString.valueOf("password"))
     };
@@ -152,45 +151,45 @@
 
     BindOperation[] saslBinds = new BindOperation[]
     {
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", ByteString.empty(), "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", ByteString.empty(), "EXTERNAL",
                         null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullOS, "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullOS, "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", ByteString.empty(), "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", ByteString.empty(), "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullOS, "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullOS, "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", DN.nullDN(), "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", DN.nullDN(), "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullDN, "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullDN, "EXTERNAL", null),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", DN.nullDN(), "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", DN.nullDN(), "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         null, "3", nullDN, "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password")),
-      new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+      new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                         noControls, "3", nullDN, "PLAIN",
                         ByteString.valueOf("\u0000u:test.user\u0000password"))
     };
@@ -1642,7 +1641,7 @@
     requestControls.add(new LDAPControl("1.2.3.4", true));
 
     BindOperationBasis bindOperation =
-         new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+         new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                            requestControls, "3", DN.nullDN(),
                         ByteString.empty());
     bindOperation.run();
@@ -1669,7 +1668,7 @@
          ByteString.valueOf("\u0000dn:cn=Directory Manager\u0000password");
 
     BindOperationBasis bindOperation =
-         new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+         new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                            requestControls, "3", DN.nullDN(), "PLAIN",
                         saslCreds);
     bindOperation.run();
@@ -1693,7 +1692,7 @@
     requestControls.add(new LDAPControl("1.2.3.4", false));
 
     BindOperationBasis bindOperation =
-         new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+         new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                            requestControls, "3", DN.nullDN(),
                            ByteString.empty());
 
@@ -1720,7 +1719,7 @@
          ByteString.valueOf("\u0000dn:cn=Directory Manager\u0000password");
 
     BindOperationBasis bindOperation =
-         new BindOperationBasis(conn, conn.nextOperationID(), conn.nextMessageID(),
+         new BindOperationBasis(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(),
                            requestControls, "3", DN.nullDN(), "PLAIN",
                            saslCreds);
     bindOperation.run();
@@ -1856,6 +1855,42 @@
 
 
   /**
+   * Tests performing a simple bind operation as a user who exists on
+   * another server for which a named subordinate reference exists.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(enabled=false)
+  public void testSimpleBindReferral()
+         throws Exception
+  {
+    TestCaseUtils.initializeTestBackend(true);
+
+    TestCaseUtils.addEntry(
+         "dn: ou=people,o=test",
+         "objectClass: top",
+         "objectClass: referral",
+         "objectClass: extensibleObject",
+         "ou: people",
+         "ref: ldap://example.com:1389/ou=people,o=test");
+
+    InternalClientConnection conn =
+         InternalClientConnection.getRootConnection();
+
+    BindOperation bindOperation =
+         conn.processSimpleBind(ByteString.valueOf("uid=test,ou=people,o=test"),
+                                ByteString.valueOf("password"));
+    assertEquals(bindOperation.getResultCode(), ResultCode.REFERRAL);
+
+    List<String> referralURLs = bindOperation.getReferralURLs();
+    assertNotNull(referralURLs);
+    assertEquals(referralURLs.size(), 1);
+    assertEquals(referralURLs.get(0), "ldap://example.com:1389/ou=people,o=test");
+  }
+
+
+
+  /**
    * Tests performing a simple bind operation with a valid DN but incorrect
    * password.
    */
@@ -2272,6 +2307,7 @@
   /**
    * Tests the <CODE>cancel</CODE> method to ensure that it indicates that the
    * operation cannot be cancelled.
+   * @param bindOperation The bind operation.
    */
   @Test(dataProvider = "simpleBinds")
   public void testCancel(BindOperation bindOperation)
@@ -2286,6 +2322,7 @@
   /**
    * Tests the <CODE>getCancelRequest</CODE> method to ensure that it always
    * returns <CODE>null</CODE>.
+   * @param bindOperation The bind operation.
    */
   @Test(dataProvider = "simpleBinds")
   public void testGetCancelRequest(BindOperation bindOperation)

--
Gitblit v1.10.0