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