Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #5
0
 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)
Beispiel #8
0
 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)
Beispiel #9
0
 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)
Beispiel #10
0
 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)
Beispiel #11
0
 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)
Beispiel #12
0
    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())
Beispiel #14
0
 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)
Beispiel #15
0
 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)
Beispiel #16
0
 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)
Beispiel #17
0
 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)
Beispiel #18
0
    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)
Beispiel #19
0
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)
Beispiel #20
0

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)