diff --git a/Tests/t_ldap_schema_tokenizer.py b/Tests/t_ldap_schema_tokenizer.py index 79a12e9..ebd6819 100644 --- a/Tests/t_ldap_schema_tokenizer.py +++ b/Tests/t_ldap_schema_tokenizer.py @@ -10,6 +10,7 @@ TESTCASES_BASIC = ( (" BLUBBER DI BLUBB ", ["BLUBBER", "DI", "BLUBB"]), ("BLUBBER DI BLUBB", ["BLUBBER", "DI", "BLUBB"]), + ("BL-UB-BER DI BL-UBB", ["BL-UB-BER", "DI", "BL-UBB"]), ("BLUBBER DI BLUBB ", ["BLUBBER", "DI", "BLUBB"]), ("BLUBBER DI 'BLUBB' ", ["BLUBBER", "DI", "BLUBB"]), ("BLUBBER ( DI ) 'BLUBB' ", ["BLUBBER", "(", "DI", ")", "BLUBB"]), @@ -24,19 +25,38 @@ ("BLUBB 'DA$BLAH'", ['BLUBB', "DA$BLAH"]), ("BLUBB DI 'BLU B B ER' DA 'BLAH' ", ['BLUBB', 'DI', 'BLU B B ER', 'DA', 'BLAH']), ("BLUBB DI 'BLU B B ER' DA 'BLAH' LABER", ['BLUBB', 'DI', 'BLU B B ER', 'DA', 'BLAH', 'LABER']), + ("BLUBB\t'DA\tBLUB'", ['BLUBB', "DA\tBLUB"]), +) + +# UTF-8 raw strings +TESTCASES_UTF8 = ( + (" BL\xc3\x9cBBER D\xc3\x84 BL\xc3\x9cBB ", ["BL\xc3\x9cBBER", "D\xc3\x84", "BL\xc3\x9cBB"]), + ("BL\xc3\x9cBBER D\xc3\x84 BL\xc3\x9cBB", ["BL\xc3\x9cBBER", "D\xc3\x84", "BL\xc3\x9cBB"]), + ("BL\xc3\x9cBBER D\xc3\x84 BL\xc3\x9cBB ", ["BL\xc3\x9cBBER", "D\xc3\x84", "BL\xc3\x9cBB"]), ) # broken schema of Oracle Internet Directory TESTCASES_BROKEN_OID = ( + ("BLUBB DI 'BLU B B ER'MUST 'BLAH' ", ['BLUBB', 'DI', 'BLU B B ER', 'MUST', 'BLAH']), ("BLUBBER DI 'BLU'BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU'BB ER", "DA", "BLAH"]), - ("BLUBB DI 'BLU B B ER'MUST 'BLAH' ", ['BLUBB', 'DI', 'BLU B B ER', 'MUST', 'BLAH']) ) # for quoted single quotes inside string values TESTCASES_ESCAPED_QUOTES = ( - ("BLUBBER DI 'BLU\'BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU'BB ER", "DA", "BLAH"]), + ("BLUBBER '\\''", ["BLUBBER", "'"]), + ("BLUBBER DI 'BLU\\'BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU'BB ER", "DA", "BLAH"]), + ("BLUBBER DI 'BLU\\' BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU' BB ER", "DA", "BLAH"]), ) +# test cases which should result in ValueError raised +TESTCASES_BROKEN = ( + "( BLUB", + "BLUB )", + "( BLUB )) DA (", + "BLUB 'DA", + r"BLUB 'DA\'", + "BLUB $ DA", +) class TestSplitTokens(unittest.TestCase): """ @@ -48,18 +68,33 @@ def _run_split_tokens_tests(self, test_cases): token_list = ldap.schema.split_tokens(test_value) self.assertEqual(token_list, test_result) + def _run_failure_tests(self, test_cases): + for test_value in test_cases: + try: + _ = ldap.schema.split_tokens(test_value) + except ValueError: + pass + else: + self.fail('%r should have raised ValueError' % (test_value)) + def test_basic(self): """ run test cases specified in constant TESTCASES_BASIC """ self._run_split_tokens_tests(TESTCASES_BASIC) + def test_utf8(self): + """ + run test cases specified in constant TESTCASES_BASIC + """ + self._run_split_tokens_tests(TESTCASES_UTF8) + @unittest.expectedFailure def test_broken_oid(self): """ run test cases specified in constant TESTCASES_BROKEN_OID """ - self._run_split_tokens_tests(TESTCASES_BROKEN_OID) + self._run_failure_tests(TESTCASES_BROKEN_OID) @unittest.expectedFailure def test_escaped_quotes(self): @@ -68,6 +103,9 @@ def test_escaped_quotes(self): """ self._run_split_tokens_tests(TESTCASES_ESCAPED_QUOTES) + def test_broken(self): + self._run_failure_tests(TESTCASES_BROKEN) + if __name__ == '__main__': unittest.main()