From 5ddd413407ed92f45379c415c64e36dde002cea1 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Mon, 25 Sep 2006 10:02:49 +0000
Subject: [PATCH] Break the Equality Matching rule tests in subclasses. Add some tests for more Equality matching rules
---
opends/tests/unit-tests-testng/src/server/org/opends/server/schema/EqualityMatchingRuleTest.java | 282 ++++++++++++++++++++-----------------------------------
1 files changed, 103 insertions(+), 179 deletions(-)
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 be1fcd1..a939589 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
@@ -28,230 +28,154 @@
import org.opends.server.api.EqualityMatchingRule;
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.opends.server.types.ConditionResult;
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.*;
/**
* Test The equality matching rules and the equality matching rule api.
*/
-public class EqualityMatchingRuleTest extends SchemaTestCase
+public abstract class EqualityMatchingRuleTest extends SchemaTestCase
{
+ /**
+ * Generate data for the EqualityMatching Rule test.
+ *
+ * @return the data for the equality matching rule test.
+ */
@DataProvider(name="equalitymatchingrules")
- 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},
- {"BooleanEqualityMatchingRule", "1", "true", true},
- {"BooleanEqualityMatchingRule", "FALSE", "false", true},
- {"BooleanEqualityMatchingRule", "NO", "false", true},
- {"BooleanEqualityMatchingRule", "OFF", "false", true},
- {"BooleanEqualityMatchingRule", "0", "false", true},
- {"BooleanEqualityMatchingRule", "TRUE", "false", false},
+ public abstract Object[][] createEqualityMatchingRuleTest();
- {"CaseIgnoreEqualityMatchingRule", " string ", "string", true},
- {"CaseIgnoreEqualityMatchingRule", "string ", "string", true},
- {"CaseIgnoreEqualityMatchingRule", " string", "string", true},
- {"CaseIgnoreEqualityMatchingRule", " ", " ", true},
- {"CaseIgnoreEqualityMatchingRule", "Z", "z", true},
- {"CaseIgnoreEqualityMatchingRule",
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
- "abcdefghijklmnopqrstuvwxyz1234567890", true},
+ /**
+ * Generate invalid data for the EqualityMatching Rule test.
+ *
+ * @return the data for the EqualityMatchingRulesInvalidValuestest.
+ */
+ @DataProvider(name="equalityMatchingRuleInvalidValues")
+ public abstract Object[][] createEqualityMatchingRuleInvalidValues();
- {"IntegerEqualityMatchingRule", "1234567890", "1234567890", true},
- {"IntegerEqualityMatchingRule", "-1", "-1", true},
- {"IntegerEqualityMatchingRule", "-9876543210", "-9876543210", true},
- {"IntegerEqualityMatchingRule", "1", "-1", false},
- {"GeneralizedTimeEqualityMatchingRule","2006090613Z",
- "20060906130000.000Z", true},
- {"GeneralizedTimeEqualityMatchingRule","200609061350Z",
- "20060906135000.000Z", true},
- {"GeneralizedTimeEqualityMatchingRule","200609061351Z",
- "20060906135000.000Z", false},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030Z",
- "20060906135030.000Z", true},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030.3Z",
- "20060906135030.300Z", true},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030.30Z",
- "20060906135030.300Z", true},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030.Z",
- "20060906135030.000Z", true},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030.0118Z",
- "20060906135030.012Z", true},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030+01",
- "20060906125030.000Z", true},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030+0101",
- "20060906124930.000Z", true},
-
- {"UUIDEqualityMatchingRule",
- "12345678-9ABC-DEF0-1234-1234567890ab",
- "12345678-9abc-def0-1234-1234567890ab", true},
- {"UUIDEqualityMatchingRule",
- "12345678-9abc-def0-1234-1234567890ab",
- "12345678-9abc-def0-1234-1234567890ab", true},
- {"UUIDEqualityMatchingRule",
- "02345678-9abc-def0-1234-1234567890ab",
- "12345678-9abc-def0-1234-1234567890ab", false},
-
- {"BitStringEqualityMatchingRule", "\'0\'B", "\'0\'B", true},
- {"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},
-
- };
-
- }
+ /**
+ * Get an instance of the matching rule.
+ *
+ * @return An instance of the matching rule to test.
+ */
+ public abstract EqualityMatchingRule getRule();
/**
* Test the normalization and the comparison of valid values.
*/
@Test(dataProvider= "equalitymatchingrules")
- public void EqualityMatchingRules(String ruleClassName, String value1,
+ public void equalityMatchingRules(String value1,
String value2, Boolean result) throws Exception
{
- // load the mathing rule code
- Class rule = Class.forName("org.opends.server.schema."+ruleClassName);
-
- // Make sure that the specified class can be instantiated as a task.
- EqualityMatchingRule ruleInstance =
- (EqualityMatchingRule) rule.newInstance();
-
- // we should call initializeMatchingRule but they all seem empty at the
- // moment.
- // ruleInstance.initializeMatchingRule(configEntry);
+ EqualityMatchingRule rule = getRule();
// normalize the 2 provided values and check that they are equals
ByteString normalizedValue1 =
- ruleInstance.normalizeValue(new ASN1OctetString(value1));
+ rule.normalizeValue(new ASN1OctetString(value1));
ByteString normalizedValue2 =
- ruleInstance.normalizeValue(new ASN1OctetString(value2));
+ rule.normalizeValue(new ASN1OctetString(value2));
- Boolean liveResult = ruleInstance.areEqual(normalizedValue1,
- normalizedValue2);
+ Boolean liveResult = rule.areEqual(normalizedValue1, normalizedValue2);
assertEquals(result, liveResult);
}
- @DataProvider(name="equalityMathchingRuleInvalidValues")
- public Object[][] createEqualityMathchingRuleInvalidValues()
+
+ /**
+ * Generate data for the EqualityMatching Rule test in warn mode.
+ *
+ * @return the data for the equality matching rule test in warn mode.
+ */
+ @DataProvider(name="warnmodeEqualityMatchingRule")
+ public Object[][] createWarnmodeEqualityMatchingRuleTest()
{
- return new Object[][] {
- {"IntegerEqualityMatchingRule", "01"},
- {"IntegerEqualityMatchingRule", "00"},
- {"IntegerEqualityMatchingRule", "-01"},
- {"IntegerEqualityMatchingRule", "1-2"},
- {"IntegerEqualityMatchingRule", "b2"},
- {"IntegerEqualityMatchingRule", "-"},
- {"IntegerEqualityMatchingRule", ""},
-
- {"GeneralizedTimeEqualityMatchingRule","2006september061Z"},
- {"GeneralizedTimeEqualityMatchingRule","2006"},
- {"GeneralizedTimeEqualityMatchingRule","200609061Z"},
- {"GeneralizedTimeEqualityMatchingRule","20060906135Z"},
- {"GeneralizedTimeEqualityMatchingRule","200609061350G"},
- {"GeneralizedTimeEqualityMatchingRule","2006090613mmZ"},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030.011"},
- {"GeneralizedTimeEqualityMatchingRule","20060906135030Zx"},
-
- {"UUIDEqualityMatchingRule", "G2345678-9abc-def0-1234-1234567890ab"},
- {"UUIDEqualityMatchingRule", "g2345678-9abc-def0-1234-1234567890ab"},
- {"UUIDEqualityMatchingRule", "12345678/9abc/def0/1234/1234567890ab"},
- {"UUIDEqualityMatchingRule", "12345678-9abc-def0-1234-1234567890a"},
-
- {"BitStringEqualityMatchingRule", "\'a\'B"},
- {"BitStringEqualityMatchingRule", "0"},
- {"BitStringEqualityMatchingRule", "010101"},
- {"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"}
-
- };
+ return new Object[][] {};
+ }
+
+ /**
+ * Test the normalization and the comparison in the warning mode
+ */
+ @Test(dataProvider= "warnmodeEqualityMatchingRule")
+ public void warnmodeEqualityMatchingRules(
+ String value1, String value2, Boolean result)
+ throws Exception
+ {
+ AcceptRejectWarn accept = DirectoryServer.getSyntaxEnforcementPolicy();
+ DirectoryServer.setSyntaxEnforcementPolicy(AcceptRejectWarn.WARN);
+ try
+ {
+ equalityMatchingRules(value1, value2, result);
+ }
+ finally
+ {
+ DirectoryServer.setSyntaxEnforcementPolicy(accept);
+ }
}
/**
* Test that invalid values are rejected.
*/
- @Test(dataProvider= "equalityMathchingRuleInvalidValues")
- public void EqualityMatchingRulesInvalidValues(String ruleClassName,
- String value) throws Exception
+ @Test(dataProvider= "equalityMatchingRuleInvalidValues")
+ public void equalityMatchingRulesInvalidValues(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.
- EqualityMatchingRule ruleInstance =
- (EqualityMatchingRule) rule.newInstance();
-
- // we should call initializeMatchingRule but they all seem empty at the
- // moment.
- // ruleInstance.initializeMatchingRule(configEntry);
+ // Get the instance of the rule to be tested.
+ EqualityMatchingRule rule = getRule();
// normalize the 2 provided values
boolean success = false;
try
{
- ruleInstance.normalizeValue(new ASN1OctetString(value));
+ rule.normalizeValue(new ASN1OctetString(value));
} catch (DirectoryException e) {
success = true;
}
- // if we get there with false value for success then the tested
- // matching rule did not raised the Exception.
- assertTrue(success);
+ if (!success)
+ {
+ fail("The matching rule : " + rule.getName() +
+ " should detect that value \"" + value + "\" is invalid");
+ }
}
+
+ /**
+ * Generate data for the EqualityMatching Rule test.
+ *
+ * @return the data for the equality matching rule test.
+ */
+ @DataProvider(name="valuesMatch")
+ public Object[][] createValuesMatch()
+ {
+ return new Object[][] {};
+ }
+
+ /**
+ * Test the valuesMatch method used for extensible filters.
+ */
+ @Test(dataProvider= "valuesMatch")
+ public void testValuesMatch(String value1,
+ String value2, Boolean result) throws Exception
+ {
+ EqualityMatchingRule rule = getRule();
+
+ // normalize the 2 provided values and check that they are equals
+ ByteString normalizedValue1 =
+ rule.normalizeValue(new ASN1OctetString(value1));
+ ByteString normalizedValue2 =
+ rule.normalizeValue(new ASN1OctetString(value2));
+
+ ConditionResult liveResult =
+ rule.valuesMatch(normalizedValue1, normalizedValue2);
+ if (result == true)
+ assertEquals(ConditionResult.TRUE, liveResult);
+ else
+ assertEquals(ConditionResult.FALSE, liveResult);
+
+ }
+
}
--
Gitblit v1.10.0