From 34fc595f27f093a1e9fa5ae95fde5e195b017c62 Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Mon, 26 Aug 2013 13:53:03 +0000
Subject: [PATCH] Fixed javadoc. Added more tests about listeners.

---
 opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java |  351 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 312 insertions(+), 39 deletions(-)

diff --git a/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java b/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java
index 0a2302b..a4b5ac8 100644
--- a/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java
+++ b/opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java
@@ -175,7 +175,7 @@
     }
 
     /**
-     * LDIF Search with null reader is allowed but throws null pointer
+     * LDIF Search with null reader is allowed but throws a null pointer
      * exception.
      *
      * @throws Exception
@@ -193,7 +193,7 @@
     }
 
     /**
-     * Test the search request using a schema and no specifying attribute
+     * Tests the search request using a schema and no specifying attribute
      * description.
      *
      * @throws Exception
@@ -229,7 +229,7 @@
     }
 
     /**
-     * Test the search request using a schema and no specifying attribute
+     * Tests the search request using a schema and no specifying attribute
      * description. TypesOnly = true.
      *
      * @throws Exception
@@ -267,7 +267,7 @@
     }
 
     /**
-     * LDIF Search with Schema use : all attributes.
+     * LDIF search with schema use : all attributes.
      *
      * @throws Exception
      */
@@ -303,7 +303,7 @@
     }
 
     /**
-     * LDIF Search with Schema use : all attributes. Types only.
+     * LDIF Search with schema use : all attributes. Types only.
      *
      * @throws Exception
      */
@@ -336,7 +336,8 @@
             assertThat(entry.getAttribute("uid")).isNotNull();
             assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
             assertThat(entry.getAttribute("uid")).isEmpty();
-            // The following assert throws an exception because no values contained in, only type.
+            // The following assert throws an exception because it contains only
+            // attribute descriptions (and not values) are to be returned.
             assertThat(entry.getAttribute("uid").firstValueAsString()).isNull();
         }
         resultReader.close();
@@ -429,7 +430,7 @@
     }
 
     /**
-     * LDIF Search with Schema use filter on uid attribute.
+     * LDIF search with schema use filter on uid attribute.
      *
      * @throws Exception
      */
@@ -462,7 +463,7 @@
     }
 
     /**
-     * LDIF Search with Schema use filter on uid attribute.
+     * LDIF search with schema use filter on uid attribute.
      *
      * @throws Exception
      */
@@ -500,7 +501,7 @@
     }
 
     /**
-     * LDIF Search with Schema use with filter not contained in this entry.
+     * LDIF search with schema use with filter not contained in this entry.
      *
      * @throws Exception
      */
@@ -564,7 +565,7 @@
     }
 
     /**
-     * Verifying LDIF Collection reader.
+     * Verifying LDIF collection reader.
      *
      * @throws Exception
      */
@@ -600,7 +601,7 @@
     }
 
     /**
-     * The LDIF newEntryCollectionReader allows a null parameter.
+     * The LDIF entry collection reader allows a null parameter.
      *
      * @throws Exception
      */
@@ -617,7 +618,7 @@
     }
 
     /**
-     * LDIF newEntryIteratorReader.
+     * Tests the LDIF entry iterator reader.
      *
      * @throws Exception
      */
@@ -655,7 +656,7 @@
     }
 
     /**
-     * LDIF newEntryIteratorReader doesn't allow null.
+     * LDIF entry iterator reader doesn't allow null.
      *
      * @throws Exception
      */
@@ -672,7 +673,7 @@
     }
 
     /**
-     * Verify LDIF CopyToChangeRecord is working.
+     * Tests the LDIF copy over a change record writer from an LDIF change record reader.
      *
      * @throws Exception
      */
@@ -703,7 +704,7 @@
     }
 
     /**
-     * LDIF copyTo - ChangeRecord doesn't allow null parameters.
+     * The LDIF copy doesn't allow null parameters.
      *
      * @throws Exception
      */
@@ -714,7 +715,7 @@
     }
 
     /**
-     * LDIF copyTo - ChangeRecord doesn't allow a null writer.
+     * LDIF copy doesn't allow a null writer.
      *
      * @throws Exception
      */
@@ -732,7 +733,7 @@
     }
 
     /**
-     * LDIF copyTo - ChangeRecord doesn't allow a null reader.
+     * LDIF copy doesn't allow a null reader.
      *
      * @throws Exception
      */
@@ -746,7 +747,7 @@
     }
 
     /**
-     * LDIF copyTo - EntryWriter doesn't allow null.
+     * Tests the LDIF copy from an entry reader to a entry writer.
      *
      * @throws Exception
      */
@@ -810,7 +811,7 @@
     }
 
     /**
-     * Testing the diff function. Following example from the admin guide.
+     * Testing the diff function. The following example is extracted from the admin guide.
      *
      * @see <a
      *      href=http://opendj.forgerock.org/doc/admin-guide/index.html#ldif-diff
@@ -893,7 +894,7 @@
     }
 
     /**
-     * Testing the diff : entry in source but not in target.
+     * Testing the diff : the entry is present in source but not in the target.
      *
      * @throws Exception
      */
@@ -940,7 +941,7 @@
     }
 
     /**
-     * Testing the diff : entry in target not in source. The rdn of the
+     * Testing the diff : entry is in the target not in the source. The rdn of the
      * following example is completed by ou=People.
      *
      * @throws Exception
@@ -990,7 +991,7 @@
     }
 
     /**
-     * Diff between two same entries : no modifications expected.
+     * Differences between two same entries : no modifications expected.
      *
      * @throws Exception
      */
@@ -1020,7 +1021,7 @@
     }
 
     /**
-     * Differences between two short ldif examples.
+     * Differences between two short LDIF examples.
      *
      * @throws Exception
      */
@@ -1213,7 +1214,7 @@
     }
 
     /**
-     * Diff between two same entries : no modifications expected.
+     * Differences between two same entries : no modifications expected.
      *
      * @throws Exception
      */
@@ -1304,7 +1305,7 @@
     }
 
     /**
-     * The patch add successfully an attribute 'manager' to the entry.
+     * The patch adds successfully an attribute 'manager' to the entry.
      *
      * @throws Exception
      */
@@ -1341,7 +1342,7 @@
     }
 
     /**
-     * The patch add two new entries to the original.
+     * The patch adds two new entries to the original.
      *
      * @throws Exception
      */
@@ -1394,7 +1395,7 @@
     }
 
     /**
-     * Try to modify an nonexistent entry. The patch throw an error via the
+     * Tries to modify a nonexistent entry. The patch throws an error via the
      * listener which is in RejectedChangeRecordListener.OVERWRITE.
      *
      * @throws Exception
@@ -1428,7 +1429,7 @@
     }
 
     /**
-     * Testing to delete in entry.
+     * Testing to delete an entry.
      *
      * @throws Exception
      */
@@ -1518,7 +1519,7 @@
     }
 
     /**
-     * Testing to delete attributes in an entry.
+     * Testing to delete attributes in a selected entry.
      *
      * @throws Exception
      */
@@ -1646,7 +1647,7 @@
     }
 
     /**
-     * Attemp to modify the entry adding uppercase in cn.
+     * Attempts to modify the entry adding upper case in cn.
      *
      * @throws Exception
      */
@@ -1806,7 +1807,7 @@
     }
 
     /**
-     * Rename a branch : from ou=People,dc=example,dc=com to ou=Human
+     * Renames a branch : from ou=People,dc=example,dc=com to ou=Human
      * Resources,dc=example,dc=com.
      *
      * @throws Exception
@@ -1902,7 +1903,7 @@
     }
 
     /**
-     * Rename a branch : from ou=People,dc=example,dc=com to ou=Human
+     * Renames a branch : from ou=People,dc=example,dc=com to ou=Human
      * Resources,dc=example,dc=com. In this example deleteoldrdn is set to 0.
      *
      * @throws Exception
@@ -2055,7 +2056,7 @@
     }
 
     /**
-     * Apply simple patch to replace/add data to the input.
+     * Applies simple patch to replace/add data to the input.
      *
      * @throws Exception
      */
@@ -2094,7 +2095,7 @@
     }
 
     /**
-     * Replace / add postalAdress.
+     * Replaces / adds postalAdress.
      *
      * @throws Exception
      */
@@ -2136,7 +2137,7 @@
     }
 
     /**
-     * Test some changes : add/replace/delete...
+     * Tests some changes : add/replace/delete...
      *
      * @throws Exception
      */
@@ -2246,7 +2247,7 @@
     }
 
     /**
-     * An example for illustrate an LDIFChangeRecordReader containing changes on
+     * An example to illustrate an LDIFChangeRecordReader containing changes on
      * previous ldif.
      *
      * @throws Exception
@@ -2355,7 +2356,7 @@
     }
 
     /**
-     * Try to apply a patch which data are not valid. Exception expected.
+     * Tries to apply a patch which data are not valid. Exception expected.
      *
      * @throws Exception
      */
@@ -2392,8 +2393,280 @@
     }
 
     /**
-     * LDIF patch - EntryReader/ChangeRecordReader doesn't allow null. Exception
-     * expected.
+     * The listener is in FAIL_FAST Mode. On this example,
+     * attaching the listener to the patch should throw a decode exception as a
+     * wrong DN is used in the modify request. (The entry does not exist).
+     *
+     * @throws Exception
+     */
+    @SuppressWarnings("resource")
+    @Test(expectedExceptions = DecodeException.class)
+    public final void testFailFastPatchOnModifyRequestFailsDueToWrongDN() throws Exception {
+
+        final RejectedChangeRecordListener listener = RejectedChangeRecordListener.FAIL_FAST;
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "objectClass: person",
+            "sn: new user",
+            "mail: mail@mailme.org"
+        );
+        // @formatter:on
+
+        // @formatter:off
+        final  LDIFChangeRecordReader patch = new LDIFChangeRecordReader(
+            "dn: uid=WRONGUID,ou=People,dc=example,dc=com",
+            "changetype: modify",
+            "add: work-phone",
+            "work-phone: 650/506-7000"
+        );
+        // @formatter:on
+        EntryReader reader = new LDIFEntryReader();
+        try {
+            reader = LDIF.patch(input, patch, listener);
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * The listener is in OVERWRITE Mode. On this example,
+     * attaching the listener to the patch should throw a decode exception even
+     * if a wrong DN is used in the modify request. (The entry does not exist).
+     * No data impacted by the patch, no warning sent.
+     *
+     * @throws Exception
+     */
+    @SuppressWarnings("resource")
+    @Test()
+    public final void testOverwritePatchOnModifyRequestSucceedsEvenIfWrongDN() throws Exception {
+
+        final RejectedChangeRecordListener listener = RejectedChangeRecordListener.OVERWRITE;
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "objectClass: person",
+            "sn: new user",
+            "mail: mail@mailme.org"
+        );
+        // @formatter:on
+
+        // @formatter:off
+        final  LDIFChangeRecordReader patch = new LDIFChangeRecordReader(
+            "dn: uid=WRONGUID,ou=People,dc=example,dc=com",
+            "changetype: modify",
+            "add: work-phone",
+            "work-phone: 650/506-7000"
+        );
+        // @formatter:on
+        EntryReader reader = new LDIFEntryReader();
+        try {
+            reader = LDIF.patch(input, patch, listener);
+            Entry entry = reader.readEntry();
+            assertThat(entry.getName().toString()).isEqualTo("uid=scarter,ou=People,dc=example,dc=com");
+            assertThat(entry.getAttributeCount()).isEqualTo(3);
+            assertThat(entry.getAttribute("objectClass").firstValueAsString()).isEqualTo(
+                    "person");
+            assertThat(entry.getAttribute("sn").firstValueAsString()).isEqualTo(
+                    "new user");
+            assertThat(entry.getAttribute("mail").firstValueAsString()).isEqualTo(
+                    "mail@mailme.org");
+            assertThat(reader.hasNext()).isFalse();
+            assertThat(entry.getAttribute("work-phone")).isNull();
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * The listener is in FAIL_FAST Mode. On this example,
+     * attaching the listener to the patch should throw a decode exception as a
+     * wrong DN is used in the modify DN request. (The entry does not exist).
+     *
+     * @throws Exception
+     */
+    @SuppressWarnings("resource")
+    @Test(expectedExceptions = DecodeException.class)
+    public final void testFailFastPatchOnModifyDNRequestFailsDueToWrongDN() throws Exception {
+        final RejectedChangeRecordListener listener = RejectedChangeRecordListener.FAIL_FAST;
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "objectClass: person",
+            "sn: new user",
+            "mail: mail@mailme.org"
+        );
+        // @formatter:on
+
+        // @formatter:off
+        final  LDIFChangeRecordReader patch = new LDIFChangeRecordReader(
+            "dn: ou=WRONGscarter, dc=example,dc=com",
+            "changetype: modrdn",
+            "newrdn: ou=Human Resources,dc=example,dc=com",
+            "deleteoldrdn: 1"
+        );
+        // @formatter:on
+        EntryReader reader = new LDIFEntryReader();
+        try {
+            reader = LDIF.patch(input, patch, listener);
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * The listener is in OVERWRITE Mode. On this example,
+     * attaching the listener to the patch should not throw a decode exception
+     * even if a wrong DN is used in the modify DN request. (Even if the entry
+     * does not exist).
+     *
+     * @throws Exception
+     */
+    @SuppressWarnings("resource")
+    @Test()
+    public final void testOverwritePatchOnModifyDNRequestSucceedsEvenWithWrongDN() throws Exception {
+        final RejectedChangeRecordListener listener = RejectedChangeRecordListener.OVERWRITE;
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "objectClass: person",
+            "sn: new user",
+            "mail: mail@mailme.org"
+        );
+        // @formatter:on
+
+        // @formatter:off
+        final  LDIFChangeRecordReader patch = new LDIFChangeRecordReader(
+            "dn: ou=WRONGscarter, dc=example,dc=com",
+            "changetype: modrdn",
+            "newrdn: ou=Human Resources,dc=example,dc=com",
+            "deleteoldrdn: 1"
+        );
+        // @formatter:on
+        EntryReader reader = new LDIFEntryReader();
+        try {
+            reader = LDIF.patch(input, patch, listener);
+            Entry entry = reader.readEntry();
+            assertThat(entry.getName().toString()).isEqualTo("uid=scarter,ou=People,dc=example,dc=com");
+            assertThat(entry.getName().toString()).isNotEqualTo("uid=scarter,ou=Human Resources,dc=example,dc=com");
+            assertThat(entry.getAttributeCount()).isEqualTo(3);
+            assertThat(entry.getAttribute("objectClass").firstValueAsString()).isEqualTo(
+                    "person");
+            assertThat(entry.getAttribute("sn").firstValueAsString()).isEqualTo(
+                    "new user");
+            assertThat(entry.getAttribute("mail").firstValueAsString()).isEqualTo(
+                    "mail@mailme.org");
+            assertThat(reader.hasNext()).isFalse();
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * The listener is in FAIL_FAST Mode. On this example,
+     * attaching the listener to the patch should throw a decode exeption as
+     * another entry containing the requested change DN already exists.
+     *
+     * @throws Exception
+     */
+    @SuppressWarnings("resource")
+    @Test(expectedExceptions = DecodeException.class)
+    public final void testFailFastPatchOnModifyDNRequestFailsDueToDuplicateEntry() throws Exception {
+        final RejectedChangeRecordListener listener = RejectedChangeRecordListener.FAIL_FAST;
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "objectClass: person",
+            "sn: new user",
+            "mail: mail@mailme.org",
+            "",
+            "dn: uid=user.2,ou=People,dc=example,dc=com",
+            "objectClass: top",
+            "objectClass: person",
+            "objectClass: organizationalperson",
+            "objectClass: inetorgperson",
+            "givenName: Eniko",
+            "sn: Eniko",
+            "cn: Eniko Atpco",
+            "uid: user.2"
+        );
+        // @formatter:on
+
+        // @formatter:off
+        final  LDIFChangeRecordReader patch = new LDIFChangeRecordReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "changetype: moddn",
+            "newrdn: uid=user.2,ou=People,dc=example,dc=com",
+            "deleteoldrdn: 0"
+        );
+        // @formatter:on
+        EntryReader reader = new LDIFEntryReader();
+        try {
+            reader = LDIF.patch(input, patch, listener);
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * The listener is in OVERWRITE Mode. On this example,
+     * attaching the listener to the patch should not throw a decode exeption
+     * even if another entry containing the requested change DN already exists.
+     * The DN is overwrited.
+     *
+     * @throws Exception
+     */
+    @SuppressWarnings("resource")
+    @Test()
+    public final void testOverwritePatchOnModifyDNRequestSucceedsEvenWithDuplicateEntry() throws Exception {
+        final RejectedChangeRecordListener listener = RejectedChangeRecordListener.OVERWRITE;
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "objectClass: person",
+            "sn: new user",
+            "mail: mail@mailme.org",
+            "",
+            "dn: uid=user.2,ou=People,dc=example,dc=com",
+            "objectClass: top",
+            "objectClass: person",
+            "objectClass: organizationalperson",
+            "objectClass: inetorgperson",
+            "givenName: Eniko",
+            "sn: Eniko",
+            "cn: Eniko Atpco",
+            "uid: user.2"
+        );
+        // @formatter:on
+
+        // @formatter:off
+        final  LDIFChangeRecordReader patch = new LDIFChangeRecordReader(
+            "dn: uid=scarter,ou=People,dc=example,dc=com",
+            "changetype: moddn",
+            "newrdn: uid=user.2,ou=People,dc=example,dc=com",
+            "deleteoldrdn: 0"
+        );
+        // @formatter:on
+        EntryReader reader = new LDIFEntryReader();
+        try {
+            reader = LDIF.patch(input, patch, listener);
+            Entry entry = reader.readEntry();
+            assertThat(entry.getName().toString()).isEqualTo("uid=user.2,ou=People,dc=example,dc=com");
+            assertThat(entry.getAttributeCount()).isEqualTo(4);
+            assertThat(entry.getAttribute("objectClass").firstValueAsString()).isEqualTo(
+                    "person");
+            assertThat(entry.getAttribute("sn").firstValueAsString()).isEqualTo(
+                    "new user");
+            assertThat(entry.getAttribute("mail").firstValueAsString()).isEqualTo(
+                    "mail@mailme.org");
+            assertThat(reader.hasNext()).isFalse();
+        } finally {
+            reader.close();
+        }
+    }
+
+    /**
+     * LDIF patch doesn't allow null. Exception expected.
      *
      * @throws Exception
      */

--
Gitblit v1.10.0