def test_item_substring_final(self):
     text = r'*foo'
     filt = pureldap.LDAPFilter_substrings(
         type='cn',
         substrings=[pureldap.LDAPFilter_substrings_final('foo'),
                     ])
     self.assertEqual(ldapfilter.parseMaybeSubstring('cn', text), filt)
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)
Beispiel #3
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 #4
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_item_substring_final(self):
     text = r'(cn=*foo)'
     filt = pureldap.LDAPFilter_substrings(
         type='cn',
         substrings=[pureldap.LDAPFilter_substrings_final('foo'),
                     ])
     self.assertEqual(ldapfilter.parseFilter(text), filt)
     self.assertEqual(filt.asText(), text)
Beispiel #6
0
 def test_item_substring_final(self):
     text = r"*foo"
     filt = pureldap.LDAPFilter_substrings(
         type="cn",
         substrings=[
             pureldap.LDAPFilter_substrings_final("foo"),
         ],
     )
     self.assertEqual(ldapfilter.parseMaybeSubstring("cn", text), filt)
 def test_item_substring_iaf(self):
     text = r'foo*bar*baz'
     filt = pureldap.LDAPFilter_substrings(
         type='cn',
         substrings=[pureldap.LDAPFilter_substrings_initial('foo'),
                     pureldap.LDAPFilter_substrings_any('bar'),
                     pureldap.LDAPFilter_substrings_final('baz'),
                     ])
     self.assertEqual(ldapfilter.parseMaybeSubstring('cn', text), filt)
Beispiel #8
0
 def test_item_substring_final(self):
     text = r"(cn=*foo)"
     filt = pureldap.LDAPFilter_substrings(
         type="cn",
         substrings=[
             pureldap.LDAPFilter_substrings_final("foo"),
         ],
     )
     self.assertEqual(ldapfilter.parseFilter(text), filt)
     self.assertEqual(filt.asText(), text)
 def test_item_substring_iaf(self):
     text = r'(cn=foo*bar*baz)'
     filt = pureldap.LDAPFilter_substrings(
         type='cn',
         substrings=[pureldap.LDAPFilter_substrings_initial('foo'),
                     pureldap.LDAPFilter_substrings_any('bar'),
                     pureldap.LDAPFilter_substrings_final('baz'),
                     ])
     self.assertEqual(ldapfilter.parseFilter(text), filt)
     self.assertEqual(filt.asText(), text)
Beispiel #10
0
 def test_item_substring_iaf(self):
     text = r"foo*bar*baz"
     filt = pureldap.LDAPFilter_substrings(
         type="cn",
         substrings=[
             pureldap.LDAPFilter_substrings_initial("foo"),
             pureldap.LDAPFilter_substrings_any("bar"),
             pureldap.LDAPFilter_substrings_final("baz"),
         ],
     )
     self.assertEqual(ldapfilter.parseMaybeSubstring("cn", text), filt)
Beispiel #11
0
 def test_item_substring_iaf(self):
     text = r"(cn=foo*bar*baz)"
     filt = pureldap.LDAPFilter_substrings(
         type="cn",
         substrings=[
             pureldap.LDAPFilter_substrings_initial("foo"),
             pureldap.LDAPFilter_substrings_any("bar"),
             pureldap.LDAPFilter_substrings_final("baz"),
         ],
     )
     self.assertEqual(ldapfilter.parseFilter(text), filt)
     self.assertEqual(filt.asText(), text)
Beispiel #12
0
 def test_substrings_match2(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_final('e'),
             ]))
     self.assertEqual(result, True)
Beispiel #13
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 #14
0
 def test_substrings_match2(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_final("e"),
             ],
         ))
     self.assertEqual(result, True)
Beispiel #15
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 #16
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 #17
0
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)


substring.setParseAction(_p_substring)

keystring = Word(string.ascii_letters,
                 string.ascii_letters + string.digits + ';-')
keystring.setName('keystring')
Beispiel #18
0
                      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)


substring.setParseAction(_p_substring)

keystring = Word(string.ascii_letters,
                 string.ascii_letters + string.digits + ';-')