Changeset 745 for trunk/server/source4/lib/ldb/tests
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 deleted
- 8 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source4/lib/ldb/tests/photo.ldif
r414 r745 2 2 changetype: modify 3 3 add: jpegPhoto 4 jpegPhoto:< file://tests/ tmp/samba4.png4 jpegPhoto:< file://tests/samba4.png 5 5 -
trunk/server/source4/lib/ldb/tests/python/api.py
r414 r745 1 #!/usr/bin/ python1 #!/usr/bin/env python 2 2 # Simple tests for the ldb python bindings. 3 3 # Copyright (C) 2007 Jelmer Vernooij <jelmer@samba.org> 4 4 5 import os , sys5 import os 6 6 import unittest 7 7 8 # Required for the standalone LDB build9 sys.path.append("build/lib.linux-i686-2.4")10 11 8 import ldb 12 9 10 13 11 def filename(): 14 return os.tempnam() 12 import tempfile 13 try: 14 dir_prefix = os.path.join(os.environ["SELFTEST_PREFIX"], "tmp") 15 except KeyError: 16 dir_prefix = None 17 return tempfile.mktemp(dir=dir_prefix) 15 18 16 19 class NoContextTests(unittest.TestCase): … … 58 61 59 62 def test_modules_tdb(self): 60 x = ldb.Ldb( "bar.ldb")63 x = ldb.Ldb(filename()) 61 64 self.assertEquals("[<ldb module 'tdb'>]", repr(x.modules())) 62 65 … … 78 81 79 82 def test_search_attr_string(self): 80 l = ldb.Ldb( "foo.tdb")83 l = ldb.Ldb(filename()) 81 84 self.assertRaises(TypeError, l.search, attrs="dc") 82 85 … … 96 99 self.assertRaises(ldb.LdbError, lambda: l.delete(ldb.Dn(l, "dc=foo2"))) 97 100 101 def test_delete_w_unhandled_ctrl(self): 102 l = ldb.Ldb(filename()) 103 m = ldb.Message() 104 m.dn = ldb.Dn(l, "dc=foo1") 105 m["b"] = ["a"] 106 l.add(m) 107 self.assertRaises(ldb.LdbError, lambda: l.delete(m.dn, ["search_options:1:2"])) 108 l.delete(m.dn) 109 98 110 def test_contains(self): 99 l = ldb.Ldb(filename()) 111 name = filename() 112 l = ldb.Ldb(name) 100 113 self.assertFalse(ldb.Dn(l, "dc=foo3") in l) 101 l = ldb.Ldb( filename())114 l = ldb.Ldb(name) 102 115 m = ldb.Message() 103 116 m.dn = ldb.Dn(l, "dc=foo3") … … 209 222 rm = l.search(m.dn)[0] 210 223 self.assertEquals(1, len(rm)) 211 rm = l.search(m.dn, attrs=["bla"]) [0]224 rm = l.search(m.dn, attrs=["bla"]) 212 225 self.assertEquals(0, len(rm)) 213 226 finally: … … 267 280 self.assertEquals(2, len(rm)) 268 281 self.assertEquals(["1234", "456"], list(rm["bla"])) 269 270 # Now create another modify, but switch the flags before we do it282 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) … … 275 288 self.assertEquals(1, len(rm)) 276 289 self.assertEquals(["1234"], list(rm["bla"])) 277 278 290 finally: 279 291 l.delete(ldb.Dn(l, "dc=add")) … … 316 328 self.assertEquals("foo\0bar", res[0]["displayname"][0]) 317 329 330 def test_no_crash_broken_expr(self): 331 l = ldb.Ldb(filename()) 332 self.assertRaises(ldb.LdbError,lambda: l.search("", ldb.SCOPE_SUBTREE, "&(dc=*)(dn=*)", ["dc"])) 333 318 334 319 335 class DnTests(unittest.TestCase): … … 332 348 y = ldb.Dn(self.ldb, "dc=foo11,bar=bloe") 333 349 self.assertEquals(x, y) 350 y = ldb.Dn(self.ldb, "dc=foo11,bar=blie") 351 self.assertNotEquals(x, y) 334 352 335 353 def test_str(self): … … 356 374 x = ldb.Dn(self.ldb, "@BLA") 357 375 self.assertEquals(None, x.parent()) 358 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)365 376 366 377 def test_is_valid(self): … … 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()) 373 382 374 383 def test_is_special(self): … … 413 422 ldif = self.ldb.write_ldif(msg[1], ldb.CHANGETYPE_NONE) 414 423 self.assertEquals("dn: foo=bar\n\n", ldif) 415 424 416 425 def test_parse_ldif_more(self): 417 426 msgs = self.ldb.parse_ldif("dn: foo=bar\n\n\ndn: bar=bar") … … 441 450 def test_iter_items(self): 442 451 self.assertEquals(0, len(self.msg.items())) 443 self.msg.dn = ldb.Dn(ldb.Ldb( "foo.tdb"), "dc=foo28")452 self.msg.dn = ldb.Dn(ldb.Ldb(filename()), "dc=foo28") 444 453 self.assertEquals(1, len(self.msg.items())) 445 454 446 455 def test_repr(self): 447 self.msg.dn = ldb.Dn(ldb.Ldb( "foo.tdb"), "dc=foo29")456 self.msg.dn = ldb.Dn(ldb.Ldb(filename()), "dc=foo29") 448 457 self.msg["dc"] = "foo" 449 458 self.assertEquals("Message({'dn': Dn('dc=foo29'), 'dc': MessageElement(['foo'])})", repr(self.msg)) … … 457 466 def test_del(self): 458 467 del self.msg["foo"] 468 469 def test_add(self): 470 self.msg.add(ldb.MessageElement(["456"], ldb.FLAG_MOD_ADD, "bla")) 471 472 def test_elements_empty(self): 473 self.assertEquals([], self.msg.elements()) 474 475 def test_elements(self): 476 el = ldb.MessageElement(["456"], ldb.FLAG_MOD_ADD, "bla") 477 self.msg.add(el) 478 self.assertEquals([el], self.msg.elements()) 459 479 460 480 def test_add_value(self): … … 476 496 477 497 def test_keys(self): 478 self.msg.dn = ldb.Dn(ldb.Ldb( "foo.tdb"), "@BASEINFO")498 self.msg.dn = ldb.Dn(ldb.Ldb(filename()), "@BASEINFO") 479 499 self.msg["foo"] = ["bla"] 480 500 self.msg["bar"] = ["bla"] … … 486 506 487 507 def test_get_dn(self): 488 self.msg.dn = ldb.Dn(ldb.Ldb( "foo.tdb"), "@BASEINFO")508 self.msg.dn = ldb.Dn(ldb.Ldb(filename()), "@BASEINFO") 489 509 self.assertEquals("@BASEINFO", self.msg.get("dn").__str__()) 490 510 491 511 def test_get_invalid(self): 492 self.msg.dn = ldb.Dn(ldb.Ldb( "foo.tdb"), "@BASEINFO")512 self.msg.dn = ldb.Dn(ldb.Ldb(filename()), "@BASEINFO") 493 513 self.assertRaises(TypeError, self.msg.get, 42) 494 514 … … 510 530 self.assertEquals(1, len(msgdiff)) 511 531 532 def test_equal_empty(self): 533 msg1 = ldb.Message() 534 msg2 = ldb.Message() 535 self.assertEquals(msg1, msg2) 536 537 def test_equal_simplel(self): 538 db = ldb.Ldb(filename()) 539 msg1 = ldb.Message() 540 msg1.dn = ldb.Dn(db, "foo=bar") 541 msg2 = ldb.Message() 542 msg2.dn = ldb.Dn(db, "foo=bar") 543 self.assertEquals(msg1, msg2) 544 msg1['foo'] = 'bar' 545 msg2['foo'] = 'bar' 546 self.assertEquals(msg1, msg2) 547 msg2['foo'] = 'blie' 548 self.assertNotEquals(msg1, msg2) 549 msg2['foo'] = 'blie' 550 551 def test_from_dict(self): 552 rec = {"dn": "dc=fromdict", 553 "a1": ["a1-val1", "a1-val1"]} 554 l = ldb.Ldb() 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()) 560 # check input params 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) 567 512 568 513 569 … … 552 608 self.assertEquals(y, x) 553 609 610 def test_extended(self): 611 el = ldb.MessageElement(["456"], ldb.FLAG_MOD_ADD, "bla") 612 self.assertEquals("MessageElement(['456'])", repr(el)) 613 554 614 555 615 class ModuleTests(unittest.TestCase): … … 572 632 return self.next.search(*args, **kwargs) 573 633 634 def request(self, *args, **kwargs): 635 pass 636 637 name = filename() 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): 640 os.unlink(name) 641 l = ldb.Ldb(name) 578 642 l.add({"dn": "@MODULES", "@LIST": "bla"}) 579 643 self.assertEquals([], ops) 580 l = ldb.Ldb( "usemodule.ldb")644 l = ldb.Ldb(name) 581 645 self.assertEquals(["init"], ops) 646 647 class LdbResultTests(unittest.TestCase): 648 649 def setUp(self): 650 name = filename() 651 self.name = name 652 if os.path.exists(name): 653 os.unlink(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"}) 668 669 def tearDown(self): 670 if os.path.exists(self.name): 671 os.unlink(self.name) 672 673 def test_return_type(self): 674 res = self.l.search() 675 self.assertEquals(str(res), "<ldb result>") 676 677 def test_get_msgs(self): 678 res = self.l.search() 679 list = res.msgs 680 681 def test_get_controls(self): 682 res = self.l.search() 683 list = res.controls 684 685 def test_get_referals(self): 686 res = self.l.search() 687 list = res.referals 688 689 def test_iter_msgs(self): 690 found = False 691 for l in self.l.search().msgs: 692 if str(l.dn) == "OU=OU10,DC=SAMBA,DC=ORG": 693 found = True 694 self.assertTrue(found) 695 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) 700 701 def test_iter_controls(self): 702 res = self.l.search().controls 703 it = iter(res) 704 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") 710 711 def test_iter_refs(self): 712 res = self.l.search().referals 713 it = iter(res) 714 715 def test_iter_as_sequence_msgs(self): 716 found = False 717 res = self.l.search().msgs 718 719 for i in range(0, len(res)): 720 l = res[i] 721 if str(l.dn) == "OU=OU10,DC=SAMBA,DC=ORG": 722 found = True 723 self.assertTrue(found) 724 725 def test_iter_as_sequence(self): 726 found = False 727 res = self.l.search() 728 729 for i in range(0, len(res)): 730 l = res[i] 731 if str(l.dn) == "OU=OU10,DC=SAMBA,DC=ORG": 732 found = True 733 self.assertTrue(found) 734 735 class VersionTests(unittest.TestCase): 736 737 def test_version(self): 738 self.assertTrue(isinstance(ldb.__version__, str)) 582 739 583 740 -
trunk/server/source4/lib/ldb/tests/sample_module.c
r414 r745 22 22 */ 23 23 24 #include "replace.h" 25 #include "system/filesys.h" 26 #include "system/time.h" 24 27 #include "ldb_module.h" 25 28 26 int sample_add(struct ldb_module *mod, struct ldb_request *req)29 static int sample_add(struct ldb_module *mod, struct ldb_request *req) 27 30 { 31 struct ldb_control *control; 32 28 33 ldb_msg_add_fmt(req->op.add.message, "touchedBy", "sample"); 29 34 30 return ldb_next_request(mod, req); 35 /* check if there's a relax control */ 36 control = ldb_request_get_control(req, LDB_CONTROL_RELAX_OID); 37 if (control == NULL) { 38 /* not found go on */ 39 return ldb_next_request(mod, req); 40 } else { 41 return LDB_ERR_UNWILLING_TO_PERFORM; 42 } 31 43 } 32 44 33 const struct ldb_module_ops ldb_sample_module_ops = { 45 static int sample_modify(struct ldb_module *mod, struct ldb_request *req) 46 { 47 struct ldb_control *control; 48 49 /* check if there's a relax control */ 50 control = ldb_request_get_control(req, LDB_CONTROL_RELAX_OID); 51 if (control == NULL) { 52 /* not found go on */ 53 return ldb_next_request(mod, req); 54 } else { 55 return LDB_ERR_UNWILLING_TO_PERFORM; 56 } 57 } 58 59 60 static struct ldb_module_ops ldb_sample_module_ops = { 34 61 .name = "sample", 35 62 .add = sample_add, 63 .del = sample_modify, 64 .modify = sample_modify, 36 65 }; 66 67 int ldb_sample_init(const char *version) 68 { 69 LDB_MODULE_CHECK_VERSION(version); 70 return ldb_register_module(&ldb_sample_module_ops); 71 } -
trunk/server/source4/lib/ldb/tests/test-generic.sh
r414 r745 45 45 } 46 46 47 echo " testing indexed search"47 echo "Testing indexed search" 48 48 $VALGRIND ldbsearch$EXEEXT '(uid=uham)' || exit 1 49 49 $VALGRIND ldbsearch$EXEEXT '(&(objectclass=person)(objectclass=person)(objectclass=top))' || exit 1 … … 82 82 83 83 echo "Testing binary file attribute value" 84 mkdir -p tests/tmp85 cp $LDBDIR/tests/samba4.png tests/tmp/samba4.png86 84 $VALGRIND ldbmodify$EXEEXT $LDBDIR/tests/photo.ldif || exit 1 87 85 count=`$VALGRIND ldbsearch$EXEEXT '(cn=Hampster Ursula)' jpegPhoto | grep '^dn' | wc -l` … … 90 88 exit 1 91 89 fi 92 rm -f tests/tmp/samba4.png93 90 94 91 echo "*TODO* Testing UTF8 upper lower case searches !!" -
trunk/server/source4/lib/ldb/tests/test-schema.sh
r414 r745 20 20 $VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-3.ldif || exit 1 21 21 $VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-4.ldif 22 if [ "$?" = ="0" ]; then22 if [ "$?" = "0" ]; then 23 23 echo "test failed!" 24 24 exit 1 25 25 fi 26 26 $VALGRIND bin/ldbmodify $LDBDIR/tests/schema-tests/schema-mod-test-5.ldif 27 if [ "$?" = ="0" ]; then27 if [ "$?" = "0" ]; then 28 28 echo "test failed!" 29 29 exit 1 -
trunk/server/source4/lib/ldb/tests/test-tdb.sh
r414 r745 30 30 31 31 . $LDBDIR/tests/test-tdb-features.sh 32 33 . $LDBDIR/tests/test-controls.sh -
trunk/server/source4/lib/ldb/tests/test.ldif
r414 r745 410 410 facsimiletelephonenumber: +1 313 555 9700 411 411 telephonenumber: +1 313 555 5331 412 413 dn: cn=Fred Bassett,ou=Alumni Association,ou=People,o=University of Michigan,c=TEST 414 objectclass: OpenLDAPperson 415 cn: Fred Bassett 416 sn: Bassett 417 uid: Bassett, Fred
Note:
See TracChangeset
for help on using the changeset viewer.