From 0454287ee14c6afb1e445fe6a7d4bfdcc86cf0d3 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 24 Apr 2013 08:42:31 +0000
Subject: [PATCH] Tests cleanup

---
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExtensionTestUtils.java                                     |  172 ++++++++++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java              |   99 -----
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java        |   99 -----
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java                |   99 -----
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java |   99 -----
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java                                      |   92 ++---
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java        |   99 -----
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java      |   99 -----
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java  |   99 -----
 9 files changed, 252 insertions(+), 705 deletions(-)

diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java
index 7da0ca9..e98c58f 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/crypto/CryptoManagerTestCase.java
@@ -23,67 +23,58 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions copyright 2013 ForgeRock AS
  */
 package org.opends.server.crypto;
 
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import org.opends.server.TestCaseUtils;
-import org.opends.server.types.*;
-import org.opends.server.protocols.internal.InternalClientConnection;
-import org.opends.server.protocols.internal.InternalSearchOperation;
-import org.opends.server.config.ConfigConstants;
-import org.opends.server.util.StaticUtils;
-import org.opends.server.util.TimeThread;
-import org.opends.server.util.EmbeddedUtils;
-
-import org.opends.server.core.DirectoryServer;
-import org.opends.admin.ads.util.ConnectionUtils;
-import org.opends.admin.ads.ADSContext;
-import org.opends.messages.Message;
+import static org.testng.Assert.*;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.List;
-import java.util.LinkedList;
+import java.security.MessageDigest;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
-import java.lang.reflect.Method;
-import java.security.MessageDigest;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.annotations.DataProvider;
+import java.util.LinkedList;
+import java.util.List;
 
 import javax.crypto.Mac;
-import javax.naming.directory.*;
-import javax.naming.ldap.LdapName;
+import javax.naming.directory.SearchControls;
+import javax.naming.directory.SearchResult;
 import javax.naming.ldap.InitialLdapContext;
+import javax.naming.ldap.LdapName;
+
+import org.opends.admin.ads.ADSContext;
+import org.opends.admin.ads.util.ConnectionUtils;
+import org.opends.messages.Message;
+import org.opends.server.TestCaseUtils;
+import org.opends.server.config.ConfigConstants;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.protocols.internal.InternalClientConnection;
+import org.opends.server.protocols.internal.InternalSearchOperation;
+import org.opends.server.types.*;
+import org.opends.server.util.EmbeddedUtils;
+import org.opends.server.util.StaticUtils;
+import org.opends.server.util.TimeThread;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
 
 /**
  This class tests the CryptoManager.
  */
+@SuppressWarnings("javadoc")
 public class CryptoManagerTestCase extends CryptoTestCase {
-  /**
-   Setup..
-   @throws Exception  If an unexpected problem occurs.
-   */
+
   @BeforeClass()
   public void setUp()
          throws Exception {
     TestCaseUtils.startServer();
   }
 
-  /**
-   Cleanup.
-   @throws Exception If an exceptional condition arises.
-   */
   @AfterClass()
   public void CleanUp() throws Exception {
     // Removes at least secret keys added in this test case.
@@ -128,7 +119,7 @@
     assertTrue(StaticUtils.bytesToHexNoSpace(
          md.digest(ldapCert)).equals(cm.getInstanceKeyID()));
 
-    // Call twice to ensure idempotent. 
+    // Call twice to ensure idempotent.
     CryptoManagerImpl.publishInstanceKeyEntryInADS();
     CryptoManagerImpl.publishInstanceKeyEntryInADS();
   }
@@ -240,10 +231,10 @@
             ? cm.encrypt(secretMessage.getBytes()) // default
             : cm.encrypt(cp.getTransformation(), cp.getKeyLength(),
                          secretMessage.getBytes());
-    assertEquals(-1, (new String(cipherText)).indexOf(secretMessage));
+    assertEquals(-1, new String(cipherText).indexOf(secretMessage));
 
     final byte[] plainText = cm.decrypt(cipherText);
-    assertEquals((new String(plainText)), secretMessage);
+    assertEquals(new String(plainText), secretMessage);
   }
 
 
@@ -304,19 +295,12 @@
 
     // test cycle
     final byte[] plainText = cm.decrypt(cipherText2);
-    assertEquals((new String(plainText)), secretMessage);
+    assertEquals(new String(plainText), secretMessage);
 
     // test for identical keys
-    try {
-      Method m = Arrays.class.getMethod("copyOfRange", (new byte[16]).getClass(),
-              Integer.TYPE, Integer.TYPE);
-      final byte[] keyID = (byte[])m.invoke(null, cipherText, 1, 16);
-      final byte[] keyID2 = (byte[])m.invoke(null, cipherText2, 1, 16);
-      assertEquals(keyID, keyID2);
-    }
-    catch (NoSuchMethodException ex) {
-      // skip this test - requires at least Java 6
-    }
+    final byte[] keyID = Arrays.copyOfRange(cipherText, 1, 16);
+    final byte[] keyID2 = Arrays.copyOfRange(cipherText2, 1, 16);
+    assertTrue(Arrays.equals(keyID, keyID2));
 
     // test for distinct ciphertext
     assertTrue(! Arrays.equals(cipherText, cipherText2));
@@ -347,9 +331,9 @@
             DirectoryServer.getEnvironmentConfig());
 
     byte[] plainText = cm.decrypt(cipherText);
-    assertEquals((new String(plainText)), secretMessage);
+    assertEquals(new String(plainText), secretMessage);
     plainText = cm.decrypt(cipherText2);
-    assertEquals((new String(plainText)), secretMessage);
+    assertEquals(new String(plainText), secretMessage);
   }
 
 
@@ -425,7 +409,7 @@
     //Wait so the above asynchronous modification can be applied. The crypto
     //manager's cipherKeyEntryCache needs to be updated before the encrypt()
     //method is called below.
-    Thread.sleep(1000); 
+    Thread.sleep(1000);
     // Use the transformation and key length again. A new cipher key
     // should be produced.
     final byte[] cipherText2 = cm.encrypt(cipherTransformationName,
@@ -441,7 +425,7 @@
     // 2. Confirm ciphertext produced using the compromised key can still be
     // decrypted.
     final byte[] plainText = cm.decrypt(cipherText);
-    assertEquals((new String(plainText)), secretMessage);
+    assertEquals(new String(plainText), secretMessage);
 
     // 3. Delete the compromised entry(ies) and ensure ciphertext produced
     // using a compromised key can no longer be decrypted.
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java
index 3e47b9c..a8bd6c9 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryDNVirtualAttributeProviderTestCase.java
@@ -45,7 +45,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.*;
 import org.opends.server.workflowelement.localbackend.LocalBackendSearchOperation;
 
@@ -157,18 +156,7 @@
   public void testSearchEmptyAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryDNType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, entryDNType);
   }
 
 
@@ -186,22 +174,7 @@
   public void testSearchNoAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryDNType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, entryDNType);
   }
 
 
@@ -219,22 +192,7 @@
   public void testSearchAllUserAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryDNType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, entryDNType);
   }
 
 
@@ -252,22 +210,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(entryDNType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, entryDNType);
   }
 
 
@@ -285,22 +228,7 @@
   public void testSearchEntryDNAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("entrydn");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(entryDNType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "entrydn", entryDNType);
   }
 
 
@@ -318,22 +246,7 @@
   public void testSearchExcludeEntryDNAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryDNType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, entryDNType);
   }
 
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
index 59538f5..2bc21fa 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProviderTestCase.java
@@ -47,7 +47,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.*;
 
 import static org.testng.Assert.*;
@@ -201,18 +200,7 @@
   public void testSearchEmptyAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryUUIDType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, entryUUIDType);
   }
 
 
@@ -230,22 +218,7 @@
   public void testSearchNoAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryUUIDType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, entryUUIDType);
   }
 
 
@@ -263,22 +236,7 @@
   public void testSearchAllUserAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryUUIDType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, entryUUIDType);
   }
 
 
@@ -296,22 +254,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(entryUUIDType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, entryUUIDType);
   }
 
 
@@ -329,22 +272,7 @@
   public void testSearchEntryUUIDAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("entryuuid");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(entryUUIDType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "entryuuid", entryUUIDType);
   }
 
 
@@ -362,22 +290,7 @@
   public void testSearchExcludeEntryUUIDAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(entryUUIDType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, entryUUIDType);
   }
 
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExtensionTestUtils.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExtensionTestUtils.java
new file mode 100644
index 0000000..0c583fe
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExtensionTestUtils.java
@@ -0,0 +1,172 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2013 ForgeRock AS
+ */
+package org.opends.server.extensions;
+
+import org.opends.server.protocols.internal.InternalClientConnection;
+import org.opends.server.protocols.internal.InternalSearchOperation;
+import org.opends.server.schema.SchemaConstants;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.DN;
+import org.opends.server.types.DereferencePolicy;
+import org.opends.server.types.Entry;
+import org.opends.server.types.SearchFilter;
+import org.opends.server.types.SearchScope;
+
+import static org.testng.Assert.*;
+
+import java.util.LinkedHashSet;
+
+/**
+ * Utility class providing common code for extensions tests.
+ */
+@SuppressWarnings("javadoc")
+class ExtensionTestUtils
+{
+
+  public static void testSearchEmptyAttrs(DN entryDN,
+      AttributeType attributeType) throws Exception
+  {
+    SearchFilter filter =
+        SearchFilter.createFilterFromString("(objectClass=*)");
+
+    InternalClientConnection conn =
+        InternalClientConnection.getRootConnection();
+    InternalSearchOperation searchOperation =
+        conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
+    assertEquals(searchOperation.getSearchEntries().size(), 1);
+
+    Entry e = searchOperation.getSearchEntries().get(0);
+    assertNotNull(e);
+    assertFalse(e.hasAttribute(attributeType));
+  }
+
+  public static void testSearchNoAttrs(DN entryDN, AttributeType attributeType)
+      throws Exception
+  {
+    SearchFilter filter =
+        SearchFilter.createFilterFromString("(objectClass=*)");
+    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
+    attrList.add(SchemaConstants.NO_ATTRIBUTES);
+
+    InternalClientConnection conn =
+        InternalClientConnection.getRootConnection();
+    InternalSearchOperation searchOperation =
+        conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
+            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false, filter,
+            attrList);
+    assertEquals(searchOperation.getSearchEntries().size(), 1);
+
+    Entry e = searchOperation.getSearchEntries().get(0);
+    assertNotNull(e);
+    assertFalse(e.hasAttribute(attributeType));
+  }
+
+  public static void testSearchAllUserAttrs(DN entryDN,
+      AttributeType attributeType) throws Exception
+  {
+    SearchFilter filter =
+        SearchFilter.createFilterFromString("(objectClass=*)");
+    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
+    attrList.add("*");
+
+    InternalClientConnection conn =
+        InternalClientConnection.getRootConnection();
+    InternalSearchOperation searchOperation =
+        conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
+            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false, filter,
+            attrList);
+    assertEquals(searchOperation.getSearchEntries().size(), 1);
+
+    Entry e = searchOperation.getSearchEntries().get(0);
+    assertNotNull(e);
+    assertFalse(e.hasAttribute(attributeType));
+  }
+
+  public static void testSearchAllOperationalAttrs(DN entryDN,
+      AttributeType attributeType) throws Exception
+  {
+    SearchFilter filter =
+        SearchFilter.createFilterFromString("(objectClass=*)");
+    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
+    attrList.add("+");
+
+    InternalClientConnection conn =
+        InternalClientConnection.getRootConnection();
+    InternalSearchOperation searchOperation =
+        conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
+            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false, filter,
+            attrList);
+    assertEquals(searchOperation.getSearchEntries().size(), 1);
+
+    Entry e = searchOperation.getSearchEntries().get(0);
+    assertNotNull(e);
+    assertTrue(e.hasAttribute(attributeType));
+  }
+
+  public static void testSearchAttr(DN entryDN, String attrName,
+      AttributeType attributeType) throws Exception
+  {
+    SearchFilter filter =
+        SearchFilter.createFilterFromString("(objectClass=*)");
+    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
+    attrList.add(attrName);
+
+    InternalClientConnection conn =
+        InternalClientConnection.getRootConnection();
+    InternalSearchOperation searchOperation =
+        conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
+            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false, filter,
+            attrList);
+    assertEquals(searchOperation.getSearchEntries().size(), 1);
+
+    Entry e = searchOperation.getSearchEntries().get(0);
+    assertNotNull(e);
+    assertTrue(e.hasAttribute(attributeType));
+  }
+
+  public static void testSearchExcludeAttr(DN entryDN,
+      AttributeType attributeType) throws Exception
+  {
+    SearchFilter filter =
+        SearchFilter.createFilterFromString("(objectClass=*)");
+    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
+    attrList.add("objectClass");
+
+    InternalClientConnection conn =
+        InternalClientConnection.getRootConnection();
+    InternalSearchOperation searchOperation =
+        conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
+            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false, filter,
+            attrList);
+    assertEquals(searchOperation.getSearchEntries().size(), 1);
+
+    Entry e = searchOperation.getSearchEntries().get(0);
+    assertNotNull(e);
+    assertFalse(e.hasAttribute(attributeType));
+  }
+
+}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java
index 55bbd37..00e864c 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/GoverningStructureRuleVirtualAttributeProviderTestCase.java
@@ -44,7 +44,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
@@ -219,18 +218,7 @@
   public void testSearchEmptyAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(governingStructureRuleType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, governingStructureRuleType);
   }
 
 
@@ -248,22 +236,7 @@
   public void testSearchNoAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(governingStructureRuleType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, governingStructureRuleType);
   }
 
 
@@ -281,22 +254,7 @@
   public void testSearchAllUserAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(governingStructureRuleType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, governingStructureRuleType);
   }
 
 
@@ -314,22 +272,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(governingStructureRuleType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, governingStructureRuleType);
   }
 
 
@@ -347,22 +290,7 @@
   public void testSearchGoverningStructureRulesAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("governingStructureRule");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(governingStructureRuleType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "governingStructureRule", governingStructureRuleType);
   }
 
 
@@ -380,22 +308,7 @@
   public void testSearchExcludeGovStructRuleAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(governingStructureRuleType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, governingStructureRuleType);
   }
 
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java
index 59aa1c1..84b60c5 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/HasSubordinatesVirtualAttributeProviderTestCase.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.extensions;
 
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.*;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.DirectoryServerTestCase;
@@ -247,18 +246,7 @@
   public void testSearchEmptyAttrs(DN entryDN, boolean hasSubs)
       throws Exception
   {
-    SearchFilter filter =
-        SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-        InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-        conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(hasSubordinatesType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, hasSubordinatesType);
   }
 
 
@@ -275,22 +263,7 @@
   public void testSearchNoAttrs(DN entryDN, boolean hasSubs)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(hasSubordinatesType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, hasSubordinatesType);
   }
 
 
@@ -308,22 +281,7 @@
   public void testSearchAllUserAttrs(DN entryDN, boolean hasSubs)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(hasSubordinatesType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, hasSubordinatesType);
   }
 
 
@@ -341,22 +299,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN, boolean hasSubs)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(hasSubordinatesType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, hasSubordinatesType);
   }
 
 
@@ -374,22 +317,7 @@
   public void testSearchhasSubordinatesAttr(DN entryDN, boolean hasSubs)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("hasSubordinates");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(hasSubordinatesType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "hasSubordinates", hasSubordinatesType);
   }
 
 
@@ -407,22 +335,7 @@
   public void testSearchExcludehasSubordinatesAttr(DN entryDN, boolean hasSubs)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(hasSubordinatesType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, hasSubordinatesType);
   }
 
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java
index 68b2ab7..27935af 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/NumSubordinatesVirtualAttributeProviderTestCase.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.extensions;
 
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.*;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.DirectoryServerTestCase;
@@ -248,18 +247,7 @@
   public void testSearchEmptyAttrs(DN entryDN, int count)
       throws Exception
   {
-    SearchFilter filter =
-        SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-        InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-        conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(numSubordinatesType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, numSubordinatesType);
   }
 
 
@@ -276,22 +264,7 @@
   public void testSearchNoAttrs(DN entryDN, int count)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(numSubordinatesType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, numSubordinatesType);
   }
 
 
@@ -309,22 +282,7 @@
   public void testSearchAllUserAttrs(DN entryDN, int count)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(numSubordinatesType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, numSubordinatesType);
   }
 
 
@@ -342,22 +300,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN, int count)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(numSubordinatesType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, numSubordinatesType);
   }
 
 
@@ -375,22 +318,7 @@
   public void testSearchnumSubordinatesAttr(DN entryDN, int count)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("numSubordinates");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(numSubordinatesType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "numSubordinates", numSubordinatesType);
   }
 
 
@@ -408,22 +336,7 @@
   public void testSearchExcludenumSubordinatesAttr(DN entryDN, int count)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(numSubordinatesType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, numSubordinatesType);
   }
 
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java
index d477384..482a249 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/StructuralObjectClassVirtualAttributeProviderTestCase.java
@@ -44,7 +44,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
@@ -187,18 +186,7 @@
   public void testSearchEmptyAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(structuralObjectClassType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, structuralObjectClassType);
   }
 
 
@@ -216,22 +204,7 @@
   public void testSearchNoAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(structuralObjectClassType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, structuralObjectClassType);
   }
 
 
@@ -249,22 +222,7 @@
   public void testSearchAllUserAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(structuralObjectClassType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, structuralObjectClassType);
   }
 
 
@@ -282,22 +240,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(structuralObjectClassType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, structuralObjectClassType);
   }
 
 
@@ -315,22 +258,7 @@
   public void testSearchStructuralOCAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("structuralobjectclass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(structuralObjectClassType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "structuralobjectclass", structuralObjectClassType);
   }
 
 
@@ -348,22 +276,7 @@
   public void testSearchExcludeStructuralOCAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(structuralObjectClassType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, structuralObjectClassType);
   }
 
 
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java
index b5680f7..ae4a511 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/SubschemaSubentryVirtualAttributeProviderTestCase.java
@@ -44,7 +44,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.schema.SchemaConstants;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
@@ -165,18 +164,7 @@
   public void testSearchEmptyAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT, filter);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(subschemaSubentryType));
+    ExtensionTestUtils.testSearchEmptyAttrs(entryDN, subschemaSubentryType);
   }
 
 
@@ -194,22 +182,7 @@
   public void testSearchNoAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add(SchemaConstants.NO_ATTRIBUTES);
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(subschemaSubentryType));
+    ExtensionTestUtils.testSearchNoAttrs(entryDN, subschemaSubentryType);
   }
 
 
@@ -227,22 +200,7 @@
   public void testSearchAllUserAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("*");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(subschemaSubentryType));
+    ExtensionTestUtils.testSearchAllUserAttrs(entryDN, subschemaSubentryType);
   }
 
 
@@ -260,22 +218,7 @@
   public void testSearchAllOperationalAttrs(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("+");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(subschemaSubentryType));
+    ExtensionTestUtils.testSearchAllOperationalAttrs(entryDN, subschemaSubentryType);
   }
 
 
@@ -293,22 +236,7 @@
   public void testSearchSubschemaSubentryAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("subschemasubentry");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertTrue(e.hasAttribute(subschemaSubentryType));
+    ExtensionTestUtils.testSearchAttr(entryDN, "subschemasubentry", subschemaSubentryType);
   }
 
 
@@ -326,22 +254,7 @@
   public void testSearchExcludeSubschemaSubentryAttr(DN entryDN)
          throws Exception
   {
-    SearchFilter filter =
-         SearchFilter.createFilterFromString("(objectClass=*)");
-    LinkedHashSet<String> attrList = new LinkedHashSet<String>(1);
-    attrList.add("objectClass");
-
-    InternalClientConnection conn =
-         InternalClientConnection.getRootConnection();
-    InternalSearchOperation searchOperation =
-         conn.processSearch(entryDN, SearchScope.BASE_OBJECT,
-                            DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0, false,
-                            filter, attrList);
-    assertEquals(searchOperation.getSearchEntries().size(), 1);
-
-    Entry e = searchOperation.getSearchEntries().get(0);
-    assertNotNull(e);
-    assertFalse(e.hasAttribute(subschemaSubentryType));
+    ExtensionTestUtils.testSearchExcludeAttr(entryDN, subschemaSubentryType);
   }
 
 

--
Gitblit v1.10.0