From ee0fbff002e17a56aca09cb8dc7da0f4fe20ad6e Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Tue, 31 Jul 2007 21:38:45 +0000
Subject: [PATCH] 

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestImportAndExport.java |  221 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 155 insertions(+), 66 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestImportAndExport.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestImportAndExport.java
index 217b565..ccca0f0 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestImportAndExport.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/tasks/TestImportAndExport.java
@@ -32,10 +32,13 @@
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.DataProvider;
 import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.AddOperation;
 import org.opends.server.TestCaseUtils;
+import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.api.TestTaskListener;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.ResultCode;
 import org.opends.server.backends.task.TaskState;
 
 import static org.testng.Assert.*;
@@ -136,7 +139,7 @@
   public Object[][] createData() throws Exception
   {
     return new Object[][] {
-         // A fairly simple, valid import task.
+         // A fairly simple, valid import task using backend ID.
          {
               TestCaseUtils.makeEntry(
                    "dn: ds-task-id=" + UUID.randomUUID() +
@@ -155,6 +158,25 @@
               ),
               TaskState.COMPLETED_SUCCESSFULLY
          },
+         // A fairly simple, valid import task using include base DN.
+         {
+              TestCaseUtils.makeEntry(
+                   "dn: ds-task-id=" + UUID.randomUUID() +
+                        ",cn=Scheduled Tasks,cn=Tasks",
+                   "objectclass: top",
+                   "objectclass: ds-task",
+                   "objectclass: ds-task-import",
+                   "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                   "ds-task-import-include-branch: dc=example,dc=com",
+                   "ds-task-import-ldif-file: " + ldifFile.getPath(),
+                   "ds-task-import-reject-file: " + rejectFile.getPath(),
+                   "ds-task-import-overwrite-rejects: TRUE",
+                   "ds-task-import-exclude-attribute: description",
+                   "ds-task-import-exclude-filter: (st=CA)",
+                   "ds-task-import-exclude-branch: o=exclude,dc=example,dc=com"
+              ),
+              TaskState.COMPLETED_SUCCESSFULLY
+         },
          // A complex, valid import task.
          {
               TestCaseUtils.makeEntry(
@@ -182,7 +204,7 @@
               ),
               TaskState.COMPLETED_SUCCESSFULLY
          },
-         // LDIF file does not exist.
+         // A partial, valid import task.
          {
               TestCaseUtils.makeEntry(
                    "dn: ds-task-id=" + UUID.randomUUID() +
@@ -191,40 +213,15 @@
                    "objectclass: ds-task",
                    "objectclass: ds-task-import",
                    "ds-task-class-name: org.opends.server.tasks.ImportTask",
-                   "ds-task-import-ldif-file: doesnotexist",
-                   "ds-task-import-backend-id: userRoot"
-              ),
-              TaskState.STOPPED_BY_ERROR
-         },
-         // Invalid exclude filter.
-         {
-              TestCaseUtils.makeEntry(
-                   "dn: ds-task-id=" + UUID.randomUUID() +
-                        ",cn=Scheduled Tasks,cn=Tasks",
-                   "objectclass: top",
-                   "objectclass: ds-task",
-                   "objectclass: ds-task-import",
-                   "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                   "ds-task-import-include-branch: ou=people,dc=example,dc=com",
                    "ds-task-import-ldif-file: " + ldifFile.getPath(),
-                   "ds-task-import-backend-id: userRoot",
-                   "ds-task-import-exclude-filter: ()"
+                   "ds-task-import-reject-file: " + rejectFile.getPath(),
+                   "ds-task-import-overwrite-rejects: TRUE",
+                   "ds-task-import-exclude-attribute: description",
+                   "ds-task-import-exclude-filter: (st=CA)",
+                   "ds-task-import-exclude-branch: o=exclude,dc=example,dc=com"
               ),
-              TaskState.STOPPED_BY_ERROR
-         },
-         // Invalid include filter.
-         {
-              TestCaseUtils.makeEntry(
-                   "dn: ds-task-id=" + UUID.randomUUID() +
-                        ",cn=Scheduled Tasks,cn=Tasks",
-                   "objectclass: top",
-                   "objectclass: ds-task",
-                   "objectclass: ds-task-import",
-                   "ds-task-class-name: org.opends.server.tasks.ImportTask",
-                   "ds-task-import-ldif-file: " + ldifFile.getPath(),
-                   "ds-task-import-backend-id: userRoot",
-                   "ds-task-import-include-filter: ()"
-              ),
-              TaskState.STOPPED_BY_ERROR
+              TaskState.COMPLETED_SUCCESSFULLY
          },
          // Backend id does not exist.
          {
@@ -235,37 +232,8 @@
                    "objectclass: ds-task",
                    "objectclass: ds-task-import",
                    "ds-task-class-name: org.opends.server.tasks.ImportTask",
-                   "ds-task-import-ldif-file: " + ldifFile.getPath(),
-                   "ds-task-import-backend-id: doesnotexist"
-              ),
-              TaskState.STOPPED_BY_ERROR
-         },
-         // Backend does not support import.
-         {
-              TestCaseUtils.makeEntry(
-                   "dn: ds-task-id=" + UUID.randomUUID() +
-                        ",cn=Scheduled Tasks,cn=Tasks",
-                   "objectclass: top",
-                   "objectclass: ds-task",
-                   "objectclass: ds-task-import",
-                   "ds-task-class-name: org.opends.server.tasks.ImportTask",
-                   "ds-task-import-ldif-file: " + ldifFile.getPath(),
-                   "ds-task-import-backend-id: monitor"
-              ),
-              TaskState.STOPPED_BY_ERROR
-         },
-         // Backend does not handle include branch.
-         {
-              TestCaseUtils.makeEntry(
-                   "dn: ds-task-id=" + UUID.randomUUID() +
-                        ",cn=Scheduled Tasks,cn=Tasks",
-                   "objectclass: top",
-                   "objectclass: ds-task",
-                   "objectclass: ds-task-import",
-                   "ds-task-class-name: org.opends.server.tasks.ImportTask",
-                   "ds-task-import-ldif-file: " + ldifFile.getPath(),
-                   "ds-task-import-backend-id: userRoot",
-                   "ds-task-import-include-branch: dc=opends,dc=org"
+                   "ds-task-import-ldif-file: doesnotexist",
+                   "ds-task-import-backend-id: userRoot"
               ),
               TaskState.STOPPED_BY_ERROR
          },
@@ -289,12 +257,111 @@
   }
 
   /**
+   * Import and export tasks bad test data provider.
+   *
+   * @return The array of tasks test data.  The first column is a task entry
+   *  and the second column is the expected completed task state.
+   */
+  @DataProvider(name = "badimportexport")
+  public Object[][] createBadData() throws Exception
+  {
+    return new Object[][] {
+        // Invalid exclude filter.
+        {
+            TestCaseUtils.makeEntry(
+                "dn: ds-task-id=" + UUID.randomUUID() +
+                    ",cn=Scheduled Tasks,cn=Tasks",
+                "objectclass: top",
+                "objectclass: ds-task",
+                "objectclass: ds-task-import",
+                "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                "ds-task-import-ldif-file: " + ldifFile.getPath(),
+                "ds-task-import-backend-id: userRoot",
+                "ds-task-import-exclude-filter: ()"
+            ),
+            ResultCode.UNWILLING_TO_PERFORM
+        },
+        // Invalid include filter.
+        {
+            TestCaseUtils.makeEntry(
+                "dn: ds-task-id=" + UUID.randomUUID() +
+                    ",cn=Scheduled Tasks,cn=Tasks",
+                "objectclass: top",
+                "objectclass: ds-task",
+                "objectclass: ds-task-import",
+                "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                "ds-task-import-ldif-file: " + ldifFile.getPath(),
+                "ds-task-import-backend-id: userRoot",
+                "ds-task-import-include-filter: ()"
+            ),
+            ResultCode.UNWILLING_TO_PERFORM
+        },
+        // Backend id does not exist.
+        {
+            TestCaseUtils.makeEntry(
+                "dn: ds-task-id=" + UUID.randomUUID() +
+                    ",cn=Scheduled Tasks,cn=Tasks",
+                "objectclass: top",
+                "objectclass: ds-task",
+                "objectclass: ds-task-import",
+                "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                "ds-task-import-ldif-file: " + ldifFile.getPath(),
+                "ds-task-import-backend-id: doesnotexist"
+            ),
+            ResultCode.UNWILLING_TO_PERFORM
+        },
+        // Backend does not support import.
+        {
+            TestCaseUtils.makeEntry(
+                "dn: ds-task-id=" + UUID.randomUUID() +
+                    ",cn=Scheduled Tasks,cn=Tasks",
+                "objectclass: top",
+                "objectclass: ds-task",
+                "objectclass: ds-task-import",
+                "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                "ds-task-import-ldif-file: " + ldifFile.getPath(),
+                "ds-task-import-backend-id: monitor"
+            ),
+            ResultCode.UNWILLING_TO_PERFORM
+        },
+        // Backend does not handle include branch.
+        {
+            TestCaseUtils.makeEntry(
+                "dn: ds-task-id=" + UUID.randomUUID() +
+                    ",cn=Scheduled Tasks,cn=Tasks",
+                "objectclass: top",
+                "objectclass: ds-task",
+                "objectclass: ds-task-import",
+                "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                "ds-task-import-ldif-file: " + ldifFile.getPath(),
+                "ds-task-import-backend-id: userRoot",
+                "ds-task-import-include-branch: dc=opends,dc=org"
+            ),
+            ResultCode.UNWILLING_TO_PERFORM
+        },
+        // Not specifying a destination.
+        {
+            TestCaseUtils.makeEntry(
+                "dn: ds-task-id=" + UUID.randomUUID() +
+                    ",cn=Scheduled Tasks,cn=Tasks",
+                "objectclass: top",
+                "objectclass: ds-task",
+                "objectclass: ds-task-import",
+                "ds-task-class-name: org.opends.server.tasks.ImportTask",
+                "ds-task-import-ldif-file: " + ldifFile.getPath()
+            ),
+            ResultCode.UNWILLING_TO_PERFORM
+        }
+    };
+  }
+
+  /**
    * Test that various import and export task definitions complete with the
    * expected state.
    * @param taskEntry The task entry.
    * @param expectedState The expected completion state of the task.
    */
-  @Test(enabled = false, dataProvider = "importexport", groups = "slow")
+  @Test(dataProvider = "importexport", groups = "slow")
   public void testImportExport(Entry taskEntry, TaskState expectedState)
        throws Exception
   {
@@ -329,4 +396,26 @@
     }
  }
 
+  /**
+   * Add a task definition and check that it completes with the expected state.
+   * @param taskEntry The task entry.
+   * @param resultCode The expected result code of the task add.
+   * @throws Exception If the test fails.
+   */
+  @Test(dataProvider = "badimportexport")
+  public void testBadTask(Entry taskEntry, ResultCode resultCode)
+      throws Exception
+  {
+    InternalClientConnection connection =
+        InternalClientConnection.getRootConnection();
+
+    // Add the task.
+    AddOperation addOperation =
+        connection.processAdd(taskEntry.getDN(),
+                              taskEntry.getObjectClasses(),
+                              taskEntry.getUserAttributes(),
+                              taskEntry.getOperationalAttributes());
+    assertEquals(addOperation.getResultCode(), resultCode);
+  }
+
 }

--
Gitblit v1.10.0