Some more data for the schema tests
| | |
| | | */ |
| | | 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; |
| | |
| | | {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}, |
| | |
| | | {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}, |
| | |
| | | + " 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 : |
| | |
| | | " EQUALITY 2.3 ORDERING 5.6 SUBSTR 7.8 SYNTAX 9.1 SINGLE-VALUE" + |
| | | " COLLECTIVE NO-USER-MODIFICATION USAGE directoryOperations )", |
| | | 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},*/ |
| | | |
| | | }; |
| | | } |
| | |
| | | // 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(); |
| | |
| | | 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.*; |
| | | |
| | | /** |
| | |
| | | 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}, |
| | |
| | | {"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}, |
| | | |
| | | }; |
| | | |
| | |
| | | {"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"} |
| | | |
| | | }; |
| | | } |
| | | |
| | |
| | | */ |
| | | 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; |
| | |
| | | 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}, |
| | |
| | | {"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}, |
| | | }; |
| | | } |
| | | |
| | |
| | | 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") |
| | |
| | | {"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"}, |
| | |
| | | {"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"}, |
| | | }; |
| | | } |
| | | |
| | |
| | | // 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); |
| | | } |
| | | } |
| | | } |