From ee0b346d6f171fd5d03b8332b6032c2b1b087a5e Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Fri, 06 Dec 2013 08:56:24 +0000
Subject: [PATCH] - Fixed unit tests, removing all 'if (resultReader.hasNext())' - which made the tests useless. - Added unit tests about CaseExactMatchingRule && CaseIgnoreMatchingRule use.

---
 opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java |  251 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 164 insertions(+), 87 deletions(-)

diff --git a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java
index d267e62..95a1e7f 100644
--- a/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java
+++ b/opendj-sdk/opendj-core/src/test/java/org/forgerock/opendj/ldif/LDIFTestCase.java
@@ -30,6 +30,7 @@
 import static org.fest.assertions.Assertions.assertThat;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -51,7 +52,9 @@
 import org.forgerock.opendj.ldap.requests.ModifyRequest;
 import org.forgerock.opendj.ldap.requests.Requests;
 import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.schema.CoreSchema;
 import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.opendj.ldap.schema.SchemaBuilder;
 import org.testng.annotations.Test;
 
 /**
@@ -216,15 +219,13 @@
                 Requests.newSearchRequest("dc=example,dc=com", SearchScope.WHOLE_SUBTREE, "uid=*");
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(2);
-            assertThat(entry.getAttribute("uid")).isNotNull();
-            assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
-            assertThat(entry.getAttribute("uid").firstValueAsString()).isNotNull();
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(2);
+        assertThat(entry.getAttribute("uid")).isNotNull();
+        assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
+        assertThat(entry.getAttribute("uid").firstValueAsString()).isNotNull();
+
         resultReader.close();
     }
 
@@ -254,15 +255,13 @@
                         .setTypesOnly(true);
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(2);
-            assertThat(entry.getAttribute("uid")).isNotNull();
-            assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
-            assertThat(entry.getAttribute("uid")).isEmpty();
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(2);
+        assertThat(entry.getAttribute("uid")).isNotNull();
+        assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
+        assertThat(entry.getAttribute("uid")).isEmpty();
+
         resultReader.close();
     }
 
@@ -290,15 +289,13 @@
                         "(uid=user.0)", "*");
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(2);
-            assertThat(entry.getAttribute("uid")).isNotNull();
-            assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
-            assertThat(entry.getAttribute("uid").firstValueAsString()).isEqualTo("user.0");
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(2);
+        assertThat(entry.getAttribute("uid")).isNotNull();
+        assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
+        assertThat(entry.getAttribute("uid").firstValueAsString()).isEqualTo("user.0");
+
         resultReader.close();
     }
 
@@ -326,20 +323,17 @@
                         "(uid=user.0)", "*").setTypesOnly(true);
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(2);
+        assertThat(entry.getAttribute("objectClass")).isNotNull();
+        assertThat(entry.getAttribute("uid")).isNotNull();
+        assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
+        assertThat(entry.getAttribute("uid")).isEmpty();
+        // 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();
 
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(2);
-            assertThat(entry.getAttribute("objectClass")).isNotNull();
-            assertThat(entry.getAttribute("uid")).isNotNull();
-            assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
-            assertThat(entry.getAttribute("uid")).isEmpty();
-            // 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();
     }
 
@@ -372,17 +366,15 @@
                         "(uid=user.0)", "+");
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getCoreSchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(4);
-            assertThat(entry.getAttribute("entryDN").firstValueAsString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttribute("entryUUID")).isNotEmpty();
-            assertThat(entry.getAttribute("modifyTimestamp")).isNotEmpty();
-            assertThat(entry.getAttribute("modifiersName")).isNotEmpty();
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(4);
+        assertThat(entry.getAttribute("entryDN").firstValueAsString()).isEqualTo(
+                "uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttribute("entryUUID")).isNotEmpty();
+        assertThat(entry.getAttribute("modifyTimestamp")).isNotEmpty();
+        assertThat(entry.getAttribute("modifiersName")).isNotEmpty();
+
         resultReader.close();
     }
 
@@ -416,16 +408,14 @@
                         "(uid=user.0)", "+").setTypesOnly(true);
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getCoreSchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(4);
-            assertThat(entry.getAttribute("entryDN")).isEmpty();
-            assertThat(entry.getAttribute("entryUUID")).isEmpty();
-            assertThat(entry.getAttribute("modifyTimestamp")).isEmpty();
-            assertThat(entry.getAttribute("modifiersName")).isEmpty();
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(4);
+        assertThat(entry.getAttribute("entryDN")).isEmpty();
+        assertThat(entry.getAttribute("entryUUID")).isEmpty();
+        assertThat(entry.getAttribute("modifyTimestamp")).isEmpty();
+        assertThat(entry.getAttribute("modifiersName")).isEmpty();
+
         resultReader.close();
     }
 
@@ -453,12 +443,10 @@
                         "(uid=user.0)", "uid");
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(1);
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(1);
+
         resultReader.close();
     }
 
@@ -486,17 +474,13 @@
                         "(uid=user.0)", "uid").setTypesOnly(true);
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(1);
-            assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
-            assertThat(entry.getAttribute("uid")).isEmpty();
-            // The following assert throws an exception because no values contained in, only type.
-            assertThat(entry.getAttribute("uid").firstValueAsString()).isNull();
-
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(1);
+        assertThat(entry.getAttribute("uid").getAttributeDescription()).isNotNull();
+        assertThat(entry.getAttribute("uid")).isEmpty();
+        // The following assert throws an exception because no values contained in, only type.
+        assertThat(entry.getAttribute("uid").firstValueAsString()).isNull();
         resultReader.close();
     }
 
@@ -524,12 +508,10 @@
                         "(uid=user.0)", "email");
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            Entry entry = resultReader.readEntry();
-            assertThat(entry.getName().toString()).isEqualTo(
-                    "uid=user.0,ou=People,dc=example,dc=com");
-            assertThat(entry.getAttributeCount()).isEqualTo(0);
-        }
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("uid=user.0,ou=People,dc=example,dc=com");
+        assertThat(entry.getAttributeCount()).isEqualTo(0);
+
         resultReader.close();
     }
 
@@ -558,13 +540,108 @@
                         "(uid=user.0)", "wro ng"); // wrong syntax filter
 
         final EntryReader resultReader = LDIF.search(reader, sr, Schema.getEmptySchema());
-        if (resultReader.hasNext()) {
-            resultReader.readEntry();
-        }
+        resultReader.readEntry();
         resultReader.close();
     }
 
     /**
+     * Tries to search for an entry in ldif using ignore case exact matching rule and lower case search filter.
+     *
+     * @throws IOException
+     */
+    @Test
+    public final void testSearchForEntryInLDIFUsingIgnoreMatchingRuleSucceedWithLowerCaseFilter() throws IOException {
+        Schema schema =
+                new SchemaBuilder(Schema.getCoreSchema()).defaultMatchingRule(
+                        CoreSchema.getCaseIgnoreMatchingRule()).defaultSyntax(
+                        CoreSchema.getDirectoryStringSyntax()).toSchema().asNonStrictSchema();
+
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+                "dn: cn=JPEG,cn=Syntaxes,cn=config",
+                "objectClass: top",
+                "objectClass: ds-cfg-attribute-syntax",
+                "cn: JPEG",
+                "ds-cfg-java-class: org.opends.server.schema.JPEGSyntax",
+                "ds-cfg-enabled: true"
+        ).setSchema(schema);
+        // @formatter:on
+
+        final SearchRequest sr = Requests.newSearchRequest("cn=config", SearchScope.WHOLE_SUBTREE,
+                "(ds-cfg-java-class=org.opends.server.schema.jpegsyntax)", "*");
+        final EntryReader resultReader = LDIF.search(input, sr, schema);
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("cn=JPEG,cn=Syntaxes,cn=config");
+        assertThat(entry.getAttributeCount()).isEqualTo(4);
+        assertThat(entry.getAttribute("ds-cfg-java-class").firstValueAsString()).isEqualTo(
+                "org.opends.server.schema.JPEGSyntax");
+        input.close();
+    }
+
+    /**
+     * Tries to search for an entry in ldif using case exact matching rule and lower case search filter.
+     *
+     * @throws IOException
+     */
+    @Test(expectedExceptions = NoSuchElementException.class)
+    public final void testSearchForEntryInLDIFUsingExactMatchingRuleFailsWithLowerCaseFilter() throws IOException {
+        Schema schema =
+                new SchemaBuilder(Schema.getCoreSchema()).defaultMatchingRule(
+                        CoreSchema.getCaseExactMatchingRule()).defaultSyntax(
+                        CoreSchema.getDirectoryStringSyntax()).toSchema().asNonStrictSchema();
+
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+                "dn: cn=JPEG,cn=Syntaxes,cn=config",
+                "objectClass: top",
+                "objectClass: ds-cfg-attribute-syntax",
+                "cn: JPEG",
+                "ds-cfg-java-class: org.opends.server.schema.JPEGSyntax",
+                "ds-cfg-enabled: true"
+        ).setSchema(schema);
+        // @formatter:on
+
+        final SearchRequest sr = Requests.newSearchRequest("cn=config", SearchScope.WHOLE_SUBTREE,
+                "(ds-cfg-java-class=org.opends.server.schema.jpegsyntax)", "*");
+        final EntryReader resultReader = LDIF.search(input, sr, schema);
+        resultReader.readEntry();
+    }
+
+    /**
+     * Tries to search for an entry in ldif using case exact matching rule and the right search filter.
+     *
+     * @throws IOException
+     */
+    @Test
+    public final void testSearchForEntryInLDIFUsingExactMatchingRuleSucceedWithRightFilter() throws IOException {
+        Schema schema =
+                new SchemaBuilder(Schema.getCoreSchema()).defaultMatchingRule(
+                        CoreSchema.getCaseExactMatchingRule()).defaultSyntax(
+                        CoreSchema.getDirectoryStringSyntax()).toSchema().asNonStrictSchema();
+
+        // @formatter:off
+        final LDIFEntryReader input = new LDIFEntryReader(
+                "dn: cn=JPEG,cn=Syntaxes,cn=config",
+                "objectClass: top",
+                "objectClass: ds-cfg-attribute-syntax",
+                "cn: JPEG",
+                "ds-cfg-java-class: org.opends.server.schema.JPEGSyntax",
+                "ds-cfg-enabled: true"
+        ).setSchema(schema);
+        // @formatter:on
+
+        final SearchRequest sr = Requests.newSearchRequest("cn=config", SearchScope.WHOLE_SUBTREE,
+                "(ds-cfg-java-class=org.opends.server.schema.JPEGSyntax)", "*");
+        final EntryReader resultReader = LDIF.search(input, sr, schema);
+        final Entry entry = resultReader.readEntry();
+        assertThat(entry.getName().toString()).isEqualTo("cn=JPEG,cn=Syntaxes,cn=config");
+        assertThat(entry.getAttributeCount()).isEqualTo(4);
+        assertThat(entry.getAttribute("ds-cfg-java-class").firstValueAsString()).isEqualTo(
+                "org.opends.server.schema.JPEGSyntax");
+        input.close();
+    }
+
+    /**
      * Verifying LDIF collection reader.
      *
      * @throws Exception

--
Gitblit v1.10.0