From d36ba104a7dee0fbd4e92c6db633bc494eb7c122 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Fri, 22 Sep 2006 08:30:39 +0000
Subject: [PATCH] Some more data for the schema tests

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java |  120 ++++++++++++++++++++++++++++-
 opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java |   52 ++++++++++++
 opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java      |   66 +++++++++++----
 3 files changed, 211 insertions(+), 27 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java
index d476169..8f8f4dc 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/AttributeSyntaxTest.java
@@ -26,7 +26,7 @@
  */
 package org.opends.server.schema;
 
-import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.*;
 import static org.opends.server.schema.SchemaConstants.*;
 
 import org.opends.server.api.AttributeSyntax;
@@ -45,7 +45,7 @@
     // - a value that must be tested for correctness
     // - a boolean indicating if the value is correct.
     return new Object[][] {
-
+        
         // tests for the UTC time syntax. This time syntax only uses 2 digits
         // for the year but it is currently implemented using 4 digits
         // disable the tests for now.
@@ -59,6 +59,7 @@
         {SYNTAX_UTC_TIME_OID,"061231235959Z", true},
         {SYNTAX_UTC_TIME_OID,"060906135030+0101", true},
         {SYNTAX_UTC_TIME_OID,"060906135030+2359", true},
+        */
         {SYNTAX_UTC_TIME_OID,"060906135030+3359", false},
         {SYNTAX_UTC_TIME_OID,"060906135030+2389", false},
         {SYNTAX_UTC_TIME_OID,"062231235959Z", false},
@@ -69,7 +70,6 @@
         {SYNTAX_UTC_TIME_OID,"0612-1235959Z", false},
         {SYNTAX_UTC_TIME_OID,"061231#35959Z", false},
         {SYNTAX_UTC_TIME_OID,"2006", false},
-        */
 
         // generalized time.
         {SYNTAX_GENERALIZED_TIME_OID,"2006090613Z", true},
@@ -183,8 +183,9 @@
                      + " SYNTAX 2.5.4.3 "
                      + " ( this is an extension ) ", false},
 
-         {SYNTAX_BIT_STRING_OID, "\'0\'B", true},
-         {SYNTAX_BIT_STRING_OID, "\'1\'B", true},
+         {SYNTAX_BIT_STRING_OID, "'0101'B", true},
+         {SYNTAX_BIT_STRING_OID, "'1'B", true},
+         {SYNTAX_BIT_STRING_OID, "'0'B", true},
          {SYNTAX_BIT_STRING_OID, "invalid", false},
          
          // disabled because test is failing :
@@ -229,23 +230,46 @@
            "(1.2.8.5 NAME 'testtype' DESC 'full type' OBSOLETE SUP 1.2" +
            " EQUALITY 2.3 ORDERING 5.6 SUBSTR 7.8 SYNTAX 9.1 SINGLE-VALUE" +
            " COLLECTIVE NO-USER-MODIFICATION USAGE directoryOperations )",
-           true},
-           
+           true},        
          {SYNTAX_ATTRIBUTE_TYPE_OID,
                "(1.2.8.5 NAME 'testtype' DESC 'full type')",
                true},
          {SYNTAX_ATTRIBUTE_TYPE_OID,
                "(1.2.8.5 USAGE directoryOperations )",
                true},
-        /* {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},
-         {SYNTAX_ATTRIBUTE_TYPE_OID, "", true},*/
+
+
+         {SYNTAX_UUID_OID, "12345678-9ABC-DEF0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "12345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "12345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "12345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "02345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "12345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "12345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "02345678-9abc-def0-1234-1234567890ab", true},
+         {SYNTAX_UUID_OID, "G2345678-9abc-def0-1234-1234567890ab", false},
+         {SYNTAX_UUID_OID, "g2345678-9abc-def0-1234-1234567890ab", false},
+         {SYNTAX_UUID_OID, "12345678/9abc/def0/1234/1234567890ab", false},
+         {SYNTAX_UUID_OID, "12345678-9abc-def0-1234-1234567890a", false},
+         
+         {SYNTAX_IA5_STRING_OID, "12345678", true},
+         {SYNTAX_IA5_STRING_OID, "12345678\u2163", false},
+         
+         {SYNTAX_OTHER_MAILBOX_OID, "MyMail$Mymailbox", true},
+         {SYNTAX_OTHER_MAILBOX_OID, "MyMailMymailbox", false},
+         
+         {SYNTAX_TELEX_OID, "123$france$456", true},
+         {SYNTAX_TELEX_OID, "abcdefghijk$lmnopqr$stuvwxyz", true},
+         {SYNTAX_TELEX_OID, "12345$67890$()+,-./:? ", true},    
+         /*
+          * disabled because of issue : 701
+          * should accept "
+         {SYNTAX_TELEX_OID, "12345$67890$\"\"\"", true},
+         */
+         /* disabled because of issue : 701
+          * should not accept backslash and equal sign 
+         {SYNTAX_TELEX_OID, "12345$67890$\'\'", false},
+         {SYNTAX_TELEX_OID, "12345$67890$===", false},*/
          
     };
   }
@@ -260,10 +284,14 @@
     // Make sure that the specified class can be instantiated as a task.
     AttributeSyntax rule = DirectoryServer.getAttributeSyntax(oid, false);
 
+    StringBuilder reason = new StringBuilder();
     // normalize the 2 provided values and check that they are equals
-    Boolean liveResult = rule.valueIsAcceptable(
-        new ASN1OctetString(value), new StringBuilder());
-    assertEquals(result, liveResult);
+    Boolean liveResult =
+      rule.valueIsAcceptable(new ASN1OctetString(value), reason);
+    
+    if (liveResult != result)
+      fail(rule + ".valueIsAcceptable gave bad result for " + value + 
+          "reason : " + reason);
 
     // call the getters to increase code coverage...
     rule.getApproximateMatchingRule();
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
index ac7227a..be1fcd1 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java
@@ -33,6 +33,7 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import static org.opends.server.schema.SchemaConstants.SYNTAX_IA5_STRING_OID;
 import static org.testng.Assert.*;
 
 /**
@@ -44,6 +45,27 @@
   public Object[][] createEqualityMatchingRuleTest()
   {
     return new Object[][] {
+        {"WordEqualityMatchingRule", "first word", "first", true},
+        {"WordEqualityMatchingRule", "first,word", "first", true},
+        {"WordEqualityMatchingRule", "first  word", "first", true},
+        {"WordEqualityMatchingRule", "first#word", "first", true},
+        {"WordEqualityMatchingRule", "first.word", "first", true},
+        {"WordEqualityMatchingRule", "first/word", "first", true},
+        {"WordEqualityMatchingRule", "first$word", "first", true},
+        {"WordEqualityMatchingRule", "first+word", "first", true},
+        {"WordEqualityMatchingRule", "first-word", "first", true},
+        {"WordEqualityMatchingRule", "first=word", "first", true},
+        {"WordEqualityMatchingRule", "word", "first", false},
+        {"WordEqualityMatchingRule", "", "empty", false},
+        {"WordEqualityMatchingRule", "", "", true},
+        
+        {"DirectoryStringFirstComponentEqualityMatchingRule",
+          "(1.2.8.5 NAME 'testtype' DESC 'full type')",
+           "1.2.8.5", true},
+        {"DirectoryStringFirstComponentEqualityMatchingRule",
+             "(1.2.8.5 NAME 'testtype' DESC 'full type')",
+             "something", false},   
+    
         {"BooleanEqualityMatchingRule", "TRUE", "true", true},
         {"BooleanEqualityMatchingRule", "YES", "true", true},
         {"BooleanEqualityMatchingRule", "ON", "true", true},
@@ -103,7 +125,27 @@
         {"BitStringEqualityMatchingRule", "\'1\'B", "\'1\'B", true},
         {"BitStringEqualityMatchingRule", "\'0\'B", "\'1\'B", false},
         
-       
+        {"CaseExactIA5EqualityMatchingRule", "12345678",
+                                             "12345678", true},
+        {"CaseExactIA5EqualityMatchingRule", "ABC45678",
+                                             "ABC45678", true},
+        {"CaseExactIA5EqualityMatchingRule", "ABC45678",
+                                             "abc45678", false},
+                                             
+        {"CaseIgnoreIA5EqualityMatchingRule", "12345678",
+                                              "12345678", true},
+        {"CaseIgnoreIA5EqualityMatchingRule", "ABC45678",
+                                              "ABC45678", true},
+        {"CaseIgnoreIA5EqualityMatchingRule", "ABC45678",
+                                              "abc45678", true},
+                                              
+        {"UniqueMemberEqualityMatchingRule",
+                 "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B",
+                 "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B", true},
+        {"UniqueMemberEqualityMatchingRule",
+                 "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'0101'B",
+                 "1.3.6.1.4.1.1466.0=#04024869,o=Test,C=GB#'0101'B", true},
+      
     };
 
   }
@@ -169,6 +211,14 @@
         {"BitStringEqualityMatchingRule", "\'10101"},
         {"BitStringEqualityMatchingRule", "\'1010\'A"},
         
+        {"CaseExactIA5EqualityMatchingRule", "12345678\u2163"},
+        
+        {"CaseIgnoreIA5EqualityMatchingRule", "12345678\u2163"},
+        
+        {"UniqueMemberEqualityMatchingRule",
+                "1.3.6.1.4.1.1466.0=#04024869,O=Test,C=GB#'123'B"},
+        {"UniqueMemberEqualityMatchingRule", "1.3.6.1.4.1.1466.01"}
+        
     };
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
index 3a4cd36..b9eccce 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/schema/OrderingMatchingRuleTest.java
@@ -26,11 +26,13 @@
  */
 package org.opends.server.schema;
 
-import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.*;
 
 import org.opends.server.api.OrderingMatchingRule;
 import org.opends.server.core.DirectoryException;
+import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
+import org.opends.server.types.AcceptRejectWarn;
 import org.opends.server.types.ByteString;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -44,12 +46,21 @@
   public Object[][] createOrderingMatchingRuleTest()
   {
     return new Object[][] {
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+0101",
+          "20060906135030+2359", 1},
         {"GeneralizedTimeOrderingMatchingRule", "20060912180130Z",
           "20060912180130Z", 0},
         {"GeneralizedTimeOrderingMatchingRule", "20060912180130Z",
           "20060912180129Z", 1},
         {"GeneralizedTimeOrderingMatchingRule", "20060912180129Z",
           "20060912180130Z", -1},
+        {"GeneralizedTimeOrderingMatchingRule", "20060912180129.000Z",
+            "20060912180130.001Z", -1},
+        {"GeneralizedTimeOrderingMatchingRule", "20060912180129.1Z",
+            "20060912180130.2Z", -1},
+        {"GeneralizedTimeOrderingMatchingRule", "20060912180129.11Z",
+              "20060912180130.12Z", -1},
+
          
         // following test is currently disabled because it does not work  
         // {"NumericStringOrderingMatchingRule", "1", "09", -1},
@@ -69,6 +80,30 @@
         {"IntegerOrderingMatchingRule", "0", "-63", 1},
         {"IntegerOrderingMatchingRule", "987654321987654321987654321",
                                         "987654321987654321987654322", -1},
+                                        
+         {"UUIDOrderingMatchingRule",
+             "12345678-9ABC-DEF0-1234-1234567890ab",
+             "12345678-9abc-def0-1234-1234567890ab", 0},
+         {"UUIDOrderingMatchingRule",
+             "12345678-9abc-def0-1234-1234567890ab",
+             "12345678-9abc-def0-1234-1234567890ab", 0},
+         {"UUIDOrderingMatchingRule",
+               "02345678-9abc-def0-1234-1234567890ab",
+               "12345678-9abc-def0-1234-1234567890ab", -1},
+         {"UUIDOrderingMatchingRule",
+               "12345678-9abc-def0-1234-1234567890ab",
+               "02345678-9abc-def0-1234-1234567890ab", 1},
+               
+         {"CaseExactOrderingMatchingRule", "12345678", "02345678", 1},
+         {"CaseExactOrderingMatchingRule","abcdef", "bcdefa", -1},
+         {"CaseExactOrderingMatchingRule","abcdef", "abcdef", 0},
+         
+         {"CaseIgnoreOrderingMatchingRule", "12345678", "02345678", 1},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "bcdefa", -1},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "abcdef", 0},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "ABCDEF", 0},
+         {"CaseIgnoreOrderingMatchingRule","abcdef", "aCcdef", -1},
+         {"CaseIgnoreOrderingMatchingRule","aCcdef", "abcdef", 1},
     };
   }
 
@@ -96,11 +131,29 @@
       ruleInstance.normalizeValue(new ASN1OctetString(value2));
     int res = ruleInstance.compareValues(normalizedValue1, normalizedValue2);
     if (result == 0)
-      assertTrue(res == 0);
+    {
+      if (res != 0)
+      {
+        fail(ruleClassName + ".compareValues should return 0 for values " +
+            value1 + " and " + value2);
+      }
+    }
     else if (result > 0)
-      assertTrue(res > 0);
+    {
+      if (res <= 0)
+      {
+        fail(ruleClassName + ".compareValues should return a positive integer "
+            + "for values : " + value1 + " and " + value2);
+      }
+    }
     else
-      assertTrue(res < 0);
+    {
+      if (res >= 0)
+      {
+        fail(ruleClassName + ".compareValues should return a negative integer "
+            + "for values : " + value1 + " and " + value2);
+      }
+    }
   }
 
   @DataProvider(name="OrderingMatchingRuleInvalidValues")
@@ -112,7 +165,21 @@
         {"GeneralizedTimeOrderingMatchingRule","200a1231235959Z"},
         {"GeneralizedTimeOrderingMatchingRule","2006j231235959Z"},
         {"GeneralizedTimeOrderingMatchingRule","20061231#35959Z"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180a30Z"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180030Z.01"},
+        {"GeneralizedTimeOrderingMatchingRule","200609121800"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180129.hhZ"},
+        {"GeneralizedTimeOrderingMatchingRule","20060912180129.1hZ"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+aa01"},
         {"GeneralizedTimeOrderingMatchingRule","2006"},
+        /* disabled because these tests are failing
+         * see issue 675
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+3359"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+2389"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+2361"},*/
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+0"},
+        {"GeneralizedTimeOrderingMatchingRule","20060906135030+010"},
         
         {"NumericStringOrderingMatchingRule", "jfhslur"},
         {"NumericStringOrderingMatchingRule", "123AB"},
@@ -122,6 +189,11 @@
         {"IntegerOrderingMatchingRule", "+63"},
         {"IntegerOrderingMatchingRule", "AB"},
         {"IntegerOrderingMatchingRule", "0xAB"},
+        
+        {"UUIDOrderingMatchingRule", "G2345678-9abc-def0-1234-1234567890ab"},
+        {"UUIDOrderingMatchingRule", "g2345678-9abc-def0-1234-1234567890ab"},
+        {"UUIDOrderingMatchingRule", "12345678/9abc/def0/1234/1234567890ab"},
+        {"UUIDOrderingMatchingRule", "12345678-9abc-def0-1234-1234567890a"},
     };
   }
 
@@ -145,16 +217,50 @@
     // ruleInstance.initializeMatchingRule(configEntry);
 
     // normalize the 2 provided values
-    boolean success = false;
     try
     {
       ruleInstance.normalizeValue(new ASN1OctetString(value));
     } catch (DirectoryException e) {
-      success = true;
+      // that's the expected path : the matching rule has detected that 
+      // the value is incorrect.
+      return;
     }
     // if we get there with false value for  success then the tested
     // matching rule did not raised the Exception.
 
-    assertTrue(success);
+    fail(ruleClassName + " did not catch that value " + value + " is invalid.");
+  }
+  
+  /**
+   * Test that invalid values are rejected.
+   */
+  @Test(dataProvider= "OrderingMatchingRuleInvalidValues")
+  public void OrderingMatchingRulesInvalidValuesWarn(String ruleClassName,
+      String value) throws Exception
+  {
+    
+    
+    // load the matching rule code
+    Class rule = Class.forName("org.opends.server.schema."+ruleClassName);
+
+    // Make sure that the specified class can be instantiated as a task.
+    OrderingMatchingRule ruleInstance =
+      (OrderingMatchingRule) rule.newInstance();
+
+    AcceptRejectWarn accept = DirectoryServer.getSyntaxEnforcementPolicy();
+    DirectoryServer.setSyntaxEnforcementPolicy(AcceptRejectWarn.WARN);
+    // normalize the 2 provided values
+    try
+    {
+      ruleInstance.normalizeValue(new ASN1OctetString(value));
+    } catch (Exception e)
+    {
+      fail(ruleClassName + " in warn mode should not reject value " + value + e);
+      return;
+    }
+    finally
+    {
+      DirectoryServer.setSyntaxEnforcementPolicy(accept);
+    } 
   }
 }

--
Gitblit v1.10.0