def test_andornot(self): text = r'(&(!(|(cn=foo)(cn=bar)))(sn=a*b*c*d))' filt = pureldap.LDAPFilter_and([ pureldap.LDAPFilter_not( pureldap.LDAPFilter_or([ pureldap.LDAPFilter_equalityMatch( attributeDesc=pureldap.LDAPAttributeDescription( value='cn'), assertionValue=pureldap.LDAPAssertionValue( value='foo')), pureldap.LDAPFilter_equalityMatch( attributeDesc=pureldap.LDAPAttributeDescription( value='cn'), assertionValue=pureldap.LDAPAssertionValue( value='bar')), ])), pureldap.LDAPFilter_substrings( type='sn', substrings=[ pureldap.LDAPFilter_substrings_initial('a'), pureldap.LDAPFilter_substrings_any('b'), pureldap.LDAPFilter_substrings_any('c'), pureldap.LDAPFilter_substrings_final('d'), ]) ]) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text)
def test_andornot(self): text = r"(&(!(|(cn=foo)(cn=bar)))(sn=a*b*c*d))" filt = pureldap.LDAPFilter_and( [ pureldap.LDAPFilter_not( pureldap.LDAPFilter_or( [ pureldap.LDAPFilter_equalityMatch( attributeDesc=pureldap.LDAPAttributeDescription( value="cn" ), assertionValue=pureldap.LDAPAssertionValue(value="foo"), ), pureldap.LDAPFilter_equalityMatch( attributeDesc=pureldap.LDAPAttributeDescription( value="cn" ), assertionValue=pureldap.LDAPAssertionValue(value="bar"), ), ] ) ), pureldap.LDAPFilter_substrings( type="sn", substrings=[ pureldap.LDAPFilter_substrings_initial("a"), pureldap.LDAPFilter_substrings_any("b"), pureldap.LDAPFilter_substrings_any("c"), pureldap.LDAPFilter_substrings_final("d"), ], ), ] ) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text)
def test_item_substring_aa(self): text = r'*foo*bar*' filt = pureldap.LDAPFilter_substrings( type='cn', substrings=[pureldap.LDAPFilter_substrings_any('foo'), pureldap.LDAPFilter_substrings_any('bar'), ]) self.assertEqual(ldapfilter.parseMaybeSubstring('cn', text), filt)
def test_item_substring_aa(self): text = r'(cn=*foo*bar*)' filt = pureldap.LDAPFilter_substrings( type='cn', substrings=[pureldap.LDAPFilter_substrings_any('foo'), pureldap.LDAPFilter_substrings_any('bar'), ]) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text)
def test_item_substring_aa(self): text = r"*foo*bar*" filt = pureldap.LDAPFilter_substrings( type="cn", substrings=[ pureldap.LDAPFilter_substrings_any("foo"), pureldap.LDAPFilter_substrings_any("bar"), ], ) self.assertEqual(ldapfilter.parseMaybeSubstring("cn", text), filt)
def test_item_substring_iaaf(self): text = r'foo*bar*baz*quux' filt = pureldap.LDAPFilter_substrings( type='cn', substrings=[pureldap.LDAPFilter_substrings_initial('foo'), pureldap.LDAPFilter_substrings_any('bar'), pureldap.LDAPFilter_substrings_any('baz'), pureldap.LDAPFilter_substrings_final('quux'), ]) self.assertEqual(ldapfilter.parseMaybeSubstring('cn', text), filt)
def test_substrings(self): text = '(o=univ*of*mich*)' filt = pureldap.LDAPFilter_substrings( type='o', substrings=[ pureldap.LDAPFilter_substrings_initial(value='univ'), pureldap.LDAPFilter_substrings_any(value='of'), pureldap.LDAPFilter_substrings_any(value='mich'), ]) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text)
def test_item_substring_aa(self): text = r"(cn=*foo*bar*)" filt = pureldap.LDAPFilter_substrings( type="cn", substrings=[ pureldap.LDAPFilter_substrings_any("foo"), pureldap.LDAPFilter_substrings_any("bar"), ], ) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text)
def test_item_substring_iaaf(self): text = r"foo*bar*baz*quux" filt = pureldap.LDAPFilter_substrings( type="cn", substrings=[ pureldap.LDAPFilter_substrings_initial("foo"), pureldap.LDAPFilter_substrings_any("bar"), pureldap.LDAPFilter_substrings_any("baz"), pureldap.LDAPFilter_substrings_final("quux"), ], ) self.assertEqual(ldapfilter.parseMaybeSubstring("cn", text), filt)
def test_item_substring_iaaf(self): text = r'(cn=foo*bar*baz*quux)' filt = pureldap.LDAPFilter_substrings( type='cn', substrings=[ pureldap.LDAPFilter_substrings_initial('foo'), pureldap.LDAPFilter_substrings_any('bar'), pureldap.LDAPFilter_substrings_any('baz'), pureldap.LDAPFilter_substrings_final('quux'), ]) self.assertEquals(ldapfilter.parseFilter(text), filt) self.assertEquals(filt.asText(), text)
def test_substrings(self): text = "(o=univ*of*mich*)" filt = pureldap.LDAPFilter_substrings( type="o", substrings=[ pureldap.LDAPFilter_substrings_initial(value="univ"), pureldap.LDAPFilter_substrings_any(value="of"), pureldap.LDAPFilter_substrings_any(value="mich"), ], ) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text)
def test_default_escaper(self): chars = '\\*()\0' escaped_chars = '\\5c\\2a\\28\\29\\00' filters = [ (pureldap.LDAPFilter_equalityMatch( attributeDesc=pureldap.LDAPAttributeDescription('key'), assertionValue=pureldap.LDAPAttributeValue(chars)), '(key={})'.format(escaped_chars)), (pureldap.LDAPFilter_substrings_initial(value=chars), '{}'.format(escaped_chars)), (pureldap.LDAPFilter_substrings_any(value=chars), '{}'.format(escaped_chars)), (pureldap.LDAPFilter_substrings_final(value=chars), '{}'.format(escaped_chars)), (pureldap.LDAPFilter_greaterOrEqual( attributeDesc=pureldap.LDAPString('key'), assertionValue=pureldap.LDAPString(chars)), '(key>={})'.format(escaped_chars)), (pureldap.LDAPFilter_lessOrEqual( attributeDesc=pureldap.LDAPString('key'), assertionValue=pureldap.LDAPString(chars)), '(key<={})'.format(escaped_chars)), (pureldap.LDAPFilter_approxMatch( attributeDesc=pureldap.LDAPString('key'), assertionValue=pureldap.LDAPString(chars)), '(key~={})'.format(escaped_chars)), ] for filt, expected in filters: result = filt.asText() self.assertEqual(expected, result)
def test_escape_asterisk(self): text = r'(cn=*\2A*)' filt = pureldap.LDAPFilter_substrings( type='cn', substrings=[ pureldap.LDAPFilter_substrings_any(value='*'), ]) self.assertEqual(ldapfilter.parseFilter(text), filt) self.assertEqual(filt.asText(), text.lower())
def test_substrings_noMatch(self): o = inmemory.ReadOnlyInMemoryLDAPEntry(dn='cn=foo,dc=example,dc=com', attributes={ 'objectClass': ['a', 'b'], 'aValue': ['a'], 'bValue': ['b'], }) result = o.match( pureldap.LDAPFilter_substrings( type='aValue', substrings=[ pureldap.LDAPFilter_substrings_initial('bad'), pureldap.LDAPFilter_substrings_any('dog'), pureldap.LDAPFilter_substrings_any('no'), pureldap.LDAPFilter_substrings_final('bone'), ])) self.assertEqual(result, False)
def test_substrings_match6(self): o = inmemory.ReadOnlyInMemoryLDAPEntry(dn='cn=foo,dc=example,dc=com', attributes={ 'objectClass': ['a', 'b'], 'aValue': ['aBCdE'], 'bValue': ['b'], }) result = o.match( pureldap.LDAPFilter_substrings( type='aValue', substrings=[ pureldap.LDAPFilter_substrings_initial('A'), pureldap.LDAPFilter_substrings_any('b'), pureldap.LDAPFilter_substrings_any('C'), pureldap.LDAPFilter_substrings_any('D'), pureldap.LDAPFilter_substrings_final('e'), ])) self.assertEqual(result, True)
def test_substrings_noMatch(self): o = inmemory.ReadOnlyInMemoryLDAPEntry( dn="cn=foo,dc=example,dc=com", attributes={ "objectClass": ["a", "b"], "aValue": ["a"], "bValue": ["b"], }, ) result = o.match( pureldap.LDAPFilter_substrings( type="aValue", substrings=[ pureldap.LDAPFilter_substrings_initial("bad"), pureldap.LDAPFilter_substrings_any("dog"), pureldap.LDAPFilter_substrings_any("no"), pureldap.LDAPFilter_substrings_final("bone"), ], )) self.assertEqual(result, False)
def test_substrings_match6(self): o = inmemory.ReadOnlyInMemoryLDAPEntry( dn="cn=foo,dc=example,dc=com", attributes={ "objectClass": ["a", "b"], "aValue": ["aBCdE"], "bValue": ["b"], }, ) result = o.match( pureldap.LDAPFilter_substrings( type="aValue", substrings=[ pureldap.LDAPFilter_substrings_initial("A"), pureldap.LDAPFilter_substrings_any("b"), pureldap.LDAPFilter_substrings_any("C"), pureldap.LDAPFilter_substrings_any("D"), pureldap.LDAPFilter_substrings_final("e"), ], )) self.assertEqual(result, True)
def test_custom_escaper(self): chars = 'HELLO' escaped_chars = '0b10010000b10001010b10011000b10011000b1001111' def custom_escaper(s): return ''.join(bin(ord(c)) for c in s) filters = [ (pureldap.LDAPFilter_equalityMatch( attributeDesc=pureldap.LDAPAttributeDescription('key'), assertionValue=pureldap.LDAPAttributeValue(chars), escaper=custom_escaper), '(key={})'.format(escaped_chars)), (pureldap.LDAPFilter_substrings_initial(value=chars, escaper=custom_escaper), '{}'.format(escaped_chars)), (pureldap.LDAPFilter_substrings_any(value=chars, escaper=custom_escaper), '{}'.format(escaped_chars)), (pureldap.LDAPFilter_substrings_final(value=chars, escaper=custom_escaper), '{}'.format(escaped_chars)), (pureldap.LDAPFilter_greaterOrEqual( attributeDesc=pureldap.LDAPString('key'), assertionValue=pureldap.LDAPString(chars), escaper=custom_escaper), '(key>={})'.format(escaped_chars)), (pureldap.LDAPFilter_lessOrEqual( attributeDesc=pureldap.LDAPString('key'), assertionValue=pureldap.LDAPString(chars), escaper=custom_escaper), '(key<={})'.format(escaped_chars)), (pureldap.LDAPFilter_approxMatch( attributeDesc=pureldap.LDAPString('key'), assertionValue=pureldap.LDAPString(chars), escaper=custom_escaper), '(key~={})'.format(escaped_chars)), ] for filt, expected in filters: result = filt.asText() self.assertEqual(expected, result)
def _p_simple(s, l, t): attr, filtertype, value = t return filtertype(attributeDesc=pureldap.LDAPAttributeDescription(attr), assertionValue=pureldap.LDAPAssertionValue(value)) simple.setParseAction(_p_simple) present = attr + "=*" present.setParseAction(lambda s, l, t: pureldap.LDAPFilter_present(t[0])) initial = value.copy() initial.setParseAction( lambda s, l, t: pureldap.LDAPFilter_substrings_initial(t[0])) initial.setName('initial') any_value = value + Suppress(Literal("*")) any_value.setParseAction( lambda s, l, t: pureldap.LDAPFilter_substrings_any(t[0])) any = Suppress(Literal("*")) + ZeroOrMore(any_value) any.setName('any') final = value.copy() final.setName('final') final.setParseAction( lambda s, l, t: pureldap.LDAPFilter_substrings_final(t[0])) substring = attr + Suppress( Literal("=")) + Group(Optional(initial) + any + Optional(final)) substring.setName('substring') def _p_substring(s, l, t): attrtype, substrings = t return pureldap.LDAPFilter_substrings(type=attrtype, substrings=substrings)
def _p_simple(s, l, t): attr, filtertype, value = t return filtertype(attributeDesc=pureldap.LDAPAttributeDescription(attr), assertionValue=pureldap.LDAPAssertionValue(value)) simple.setParseAction(_p_simple) present = attr + "=*" present.setParseAction(lambda s, l, t: pureldap.LDAPFilter_present(t[0])) initial = value.copy() initial.setParseAction(lambda s, l, t: pureldap.LDAPFilter_substrings_initial(t[0])) initial.setName('initial') any_value = value + Suppress(Literal("*")) any_value.setParseAction(lambda s, l, t: pureldap.LDAPFilter_substrings_any(t[0])) any = Suppress(Literal("*")) + ZeroOrMore(any_value) any.setName('any') final = value.copy() final.setName('final') final.setParseAction(lambda s, l, t: pureldap.LDAPFilter_substrings_final(t[0])) substring = attr + Suppress(Literal("=")) + Group(Optional(initial) + any + Optional(final)) substring.setName('substring') def _p_substring(s, l, t): attrtype, substrings = t return pureldap.LDAPFilter_substrings( type=attrtype, substrings=substrings)