266
279
rm = l.search(m.dn)[0]
267
280
self.assertEquals(2, len(rm))
268
281
self.assertEquals(["1234", "456"], list(rm["bla"]))
270
#Now create another modify, but switch the flags before we do it
283
# Now create another modify, but switch the flags before we do it
271
284
m["bla"] = ldb.MessageElement(["456"], ldb.FLAG_MOD_ADD, "bla")
272
285
m["bla"].set_flags(ldb.FLAG_MOD_DELETE)
274
287
rm = l.search(m.dn, attrs=["bla"])[0]
275
288
self.assertEquals(1, len(rm))
276
289
self.assertEquals(["1234"], list(rm["bla"]))
279
291
l.delete(ldb.Dn(l, "dc=add"))
356
374
x = ldb.Dn(self.ldb, "@BLA")
357
375
self.assertEquals(None, x.parent())
359
def test_compare(self):
360
x = ldb.Dn(self.ldb, "dc=foo17,bar=bloe")
361
y = ldb.Dn(self.ldb, "dc=foo17,bar=bloe")
362
self.assertEquals(x, y)
363
z = ldb.Dn(self.ldb, "dc=foo17,bar=blie")
364
self.assertNotEquals(z, y)
366
377
def test_is_valid(self):
367
378
x = ldb.Dn(self.ldb, "dc=foo18,dc=bloe")
368
379
self.assertTrue(x.is_valid())
369
380
x = ldb.Dn(self.ldb, "")
370
# is_valid()'s return values appears to be a side effect of
371
# some other ldb functions. yuck.
372
# self.assertFalse(x.is_valid())
381
self.assertTrue(x.is_valid())
374
383
def test_is_special(self):
375
384
x = ldb.Dn(self.ldb, "dc=foo19,bar=bloe")
509
529
self.assertRaises(KeyError, lambda: msgdiff["foo"])
510
530
self.assertEquals(1, len(msgdiff))
532
def test_equal_empty(self):
535
self.assertEquals(msg1, msg2)
537
def test_equal_simplel(self):
538
db = ldb.Ldb(filename())
540
msg1.dn = ldb.Dn(db, "foo=bar")
542
msg2.dn = ldb.Dn(db, "foo=bar")
543
self.assertEquals(msg1, msg2)
546
self.assertEquals(msg1, msg2)
548
self.assertNotEquals(msg1, msg2)
551
def test_from_dict(self):
552
rec = {"dn": "dc=fromdict",
553
"a1": ["a1-val1", "a1-val1"]}
555
# check different types of input Flags
556
for flags in [ldb.FLAG_MOD_ADD, ldb.FLAG_MOD_REPLACE, ldb.FLAG_MOD_DELETE]:
557
m = ldb.Message.from_dict(l, rec, flags)
558
self.assertEquals(rec["a1"], list(m["a1"]))
559
self.assertEquals(flags, m["a1"].flags())
561
self.assertRaises(TypeError, ldb.Message.from_dict, dict(), rec, ldb.FLAG_MOD_REPLACE)
562
self.assertRaises(TypeError, ldb.Message.from_dict, l, list(), ldb.FLAG_MOD_REPLACE)
563
self.assertRaises(ValueError, ldb.Message.from_dict, l, rec, 0)
564
# Message.from_dict expects dictionary with 'dn'
565
err_rec = {"a1": ["a1-val1", "a1-val1"]}
566
self.assertRaises(TypeError, ldb.Message.from_dict, l, err_rec, ldb.FLAG_MOD_REPLACE)
514
570
class MessageElementTests(unittest.TestCase):
571
631
def search(self, *args, **kwargs):
572
632
return self.next.search(*args, **kwargs)
634
def request(self, *args, **kwargs):
574
638
ldb.register_module(ExampleModule)
575
if os.path.exists("usemodule.ldb"):
576
os.unlink("usemodule.ldb")
577
l = ldb.Ldb("usemodule.ldb")
639
if os.path.exists(name):
578
642
l.add({"dn": "@MODULES", "@LIST": "bla"})
579
643
self.assertEquals([], ops)
580
l = ldb.Ldb("usemodule.ldb")
581
645
self.assertEquals(["init"], ops)
647
class LdbResultTests(unittest.TestCase):
652
if os.path.exists(name):
654
self.l = ldb.Ldb(name)
655
self.l.add({"dn": "DC=SAMBA,DC=ORG", "name": "samba.org"})
656
self.l.add({"dn": "OU=ADMIN,DC=SAMBA,DC=ORG", "name": "Admins"})
657
self.l.add({"dn": "OU=USERS,DC=SAMBA,DC=ORG", "name": "Users"})
658
self.l.add({"dn": "OU=OU1,DC=SAMBA,DC=ORG", "name": "OU #1"})
659
self.l.add({"dn": "OU=OU2,DC=SAMBA,DC=ORG", "name": "OU #2"})
660
self.l.add({"dn": "OU=OU3,DC=SAMBA,DC=ORG", "name": "OU #3"})
661
self.l.add({"dn": "OU=OU4,DC=SAMBA,DC=ORG", "name": "OU #4"})
662
self.l.add({"dn": "OU=OU5,DC=SAMBA,DC=ORG", "name": "OU #5"})
663
self.l.add({"dn": "OU=OU6,DC=SAMBA,DC=ORG", "name": "OU #6"})
664
self.l.add({"dn": "OU=OU7,DC=SAMBA,DC=ORG", "name": "OU #7"})
665
self.l.add({"dn": "OU=OU8,DC=SAMBA,DC=ORG", "name": "OU #8"})
666
self.l.add({"dn": "OU=OU9,DC=SAMBA,DC=ORG", "name": "OU #9"})
667
self.l.add({"dn": "OU=OU10,DC=SAMBA,DC=ORG", "name": "OU #10"})
670
if os.path.exists(self.name):
673
def test_return_type(self):
674
res = self.l.search()
675
self.assertEquals(str(res), "<ldb result>")
677
def test_get_msgs(self):
678
res = self.l.search()
681
def test_get_controls(self):
682
res = self.l.search()
685
def test_get_referals(self):
686
res = self.l.search()
689
def test_iter_msgs(self):
691
for l in self.l.search().msgs:
692
if str(l.dn) == "OU=OU10,DC=SAMBA,DC=ORG":
694
self.assertTrue(found)
696
def test_iter_msgs_count(self):
697
self.assertTrue(self.l.search().count > 0)
698
# 13 objects has been added to the DC=SAMBA, DC=ORG
699
self.assertEqual(self.l.search(base="DC=SAMBA,DC=ORG").count, 13)
701
def test_iter_controls(self):
702
res = self.l.search().controls
705
def test_create_control(self):
706
self.assertRaises(ValueError, ldb.Control, self.l, "tatayoyo:0")
707
c = ldb.Control(self.l, "relax:1")
708
self.assertEquals(c.critical, True)
709
self.assertEquals(c.oid, "1.3.6.1.4.1.4203.666.5.12")
711
def test_iter_refs(self):
712
res = self.l.search().referals
715
def test_iter_as_sequence_msgs(self):
717
res = self.l.search().msgs
719
for i in range(0, len(res)):
721
if str(l.dn) == "OU=OU10,DC=SAMBA,DC=ORG":
723
self.assertTrue(found)
725
def test_iter_as_sequence(self):
727
res = self.l.search()
729
for i in range(0, len(res)):
731
if str(l.dn) == "OU=OU10,DC=SAMBA,DC=ORG":
733
self.assertTrue(found)
735
class VersionTests(unittest.TestCase):
737
def test_version(self):
738
self.assertTrue(isinstance(ldb.__version__, str))
584
741
if __name__ == '__main__':