📄 samba3sam.js
字号:
ok = ldb.modify(ldif); assert(ok.error == 0); /* Check in local db */ res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].foo == "baz"); assert(res.msgs[0].revision == "1"); assert(res.msgs[0].description == "foo"); /* Rename local record */ dn2 = "cn=toast,dc=idealx,dc=org"; ok = ldb.rename(dn, dn2); assert(ok.error == 0); /* Check in local db */ res = ldb.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].foo == "baz"); assert(res.msgs[0].revision == "1"); assert(res.msgs[0].description == "foo"); /* Delete local record */ ok = ldb.del(dn2); assert(ok.error == 0); /* Check it's gone */ res = ldb.search("", dn2, ldb.SCOPE_BASE); assert(res.error == 0); assert(res.msgs.length == 0); println("Testing modification of remote records"); /* Add remote record */ dn = s4.dn("cn=test"); dn2 = s3.dn("cn=test"); ldif = "dn: " + dn2 + "cn: testdescription: foosambaBadPasswordCount: 3sambaNextRid: 1001"; ok = s3.db.add(ldif); assert(ok.error == 0); /* Check it's there */ attrs = new Array("description", "sambaBadPasswordCount", "sambaNextRid"); res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "foo"); assert(res.msgs[0].sambaBadPasswordCount == "3"); assert(res.msgs[0].sambaNextRid == "1001"); /* Check in mapped db */ attrs = new Array("description", "badPwdCount", "nextRid"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "foo"); assert(res.msgs[0].badPwdCount == "3"); assert(res.msgs[0].nextRid == "1001"); /* Check in local db */ res = s4.db.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 0); /* Modify remote data of remote record */ ldif = "dn: " + dn + "replace: descriptiondescription: testreplace: badPwdCountbadPwdCount: 4"; ok = ldb.modify(ldif); /* Check in mapped db */ attrs = new Array("description", "badPwdCount", "nextRid"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "test"); assert(res.msgs[0].badPwdCount == "4"); assert(res.msgs[0].nextRid == "1001"); /* Check in remote db */ attrs = new Array("description", "sambaBadPasswordCount", "sambaNextRid"); res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "test"); assert(res.msgs[0].sambaBadPasswordCount == "4"); assert(res.msgs[0].sambaNextRid == "1001"); /* Rename remote record */ dn2 = s4.dn("cn=toast"); ok = ldb.rename(dn, dn2); assert(ok.error == 0); /* Check in mapped db */ dn = dn2; attrs = new Array("description", "badPwdCount", "nextRid"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "test"); assert(res.msgs[0].badPwdCount == "4"); assert(res.msgs[0].nextRid == "1001"); /* Check in remote db */ dn2 = s3.dn("cn=toast"); attrs = new Array("description", "sambaBadPasswordCount", "sambaNextRid"); res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "test"); assert(res.msgs[0].sambaBadPasswordCount == "4"); assert(res.msgs[0].sambaNextRid == "1001"); /* Delete remote record */ ok = ldb.del(dn); assert(ok.error == 0); /* Check in mapped db */ res = ldb.search("", dn, ldb.SCOPE_BASE); assert(res.error == 0); assert(res.msgs.length == 0); /* Check in remote db */ res = s3.db.search("", dn2, ldb.SCOPE_BASE); assert(res.error == 0); assert(res.msgs.length == 0); /* Add remote record (same as before) */ dn = s4.dn("cn=test"); dn2 = s3.dn("cn=test"); ldif = "dn: " + dn2 + "cn: testdescription: foosambaBadPasswordCount: 3sambaNextRid: 1001"; ok = s3.db.add(ldif); assert(ok.error == 0); /* Modify local data of remote record */ ldif = "dn: " + dn + "add: revisionrevision: 1replace: descriptiondescription: test"; ok = ldb.modify(ldif); /* Check in mapped db */ attrs = new Array("revision", "description"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "test"); assert(res.msgs[0].revision == "1"); /* Check in remote db */ res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "test"); assert(res.msgs[0].revision == undefined); /* Check in local db */ res = s4.db.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == undefined); assert(res.msgs[0].revision == "1"); /* Delete (newly) split record */ ok = ldb.del(dn); assert(ok.error == 0); println("Testing modification of split records"); /* Add split record */ dn = s4.dn("cn=test"); dn2 = s3.dn("cn=test"); ldif = "dn: " + dn + "cn: testdescription: foobadPwdCount: 3nextRid: 1001revision: 1"; ok = ldb.add(ldif); assert(ok.error == 0); /* Check it's there */ attrs = new Array("description", "badPwdCount", "nextRid", "revision"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "foo"); assert(res.msgs[0].badPwdCount == "3"); assert(res.msgs[0].nextRid == "1001"); assert(res.msgs[0].revision == "1"); /* Check in local db */ res = s4.db.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == undefined); assert(res.msgs[0].badPwdCount == undefined); assert(res.msgs[0].nextRid == undefined); assert(res.msgs[0].revision == "1"); /* Check in remote db */ attrs = new Array("description", "sambaBadPasswordCount", "sambaNextRid", "revision"); res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "foo"); assert(res.msgs[0].sambaBadPasswordCount == "3"); assert(res.msgs[0].sambaNextRid == "1001"); assert(res.msgs[0].revision == undefined); /* Modify of split record */ ldif = "dn: " + dn + "replace: descriptiondescription: testreplace: badPwdCountbadPwdCount: 4replace: revisionrevision: 2"; ok = ldb.modify(ldif); assert(ok.error == 0); /* Check in mapped db */ attrs = new Array("description", "badPwdCount", "nextRid", "revision"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "test"); assert(res.msgs[0].badPwdCount == "4"); assert(res.msgs[0].nextRid == "1001"); assert(res.msgs[0].revision == "2"); /* Check in local db */ res = s4.db.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == undefined); assert(res.msgs[0].badPwdCount == undefined); assert(res.msgs[0].nextRid == undefined); assert(res.msgs[0].revision == "2"); /* Check in remote db */ attrs = new Array("description", "sambaBadPasswordCount", "sambaNextRid", "revision"); res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "test"); assert(res.msgs[0].sambaBadPasswordCount == "4"); assert(res.msgs[0].sambaNextRid == "1001"); assert(res.msgs[0].revision == undefined); /* Rename split record */ dn2 = s4.dn("cn=toast"); ok = ldb.rename(dn, dn2); assert(ok.error == 0); /* Check in mapped db */ dn = dn2; attrs = new Array("description", "badPwdCount", "nextRid", "revision"); res = ldb.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == "test"); assert(res.msgs[0].badPwdCount == "4"); assert(res.msgs[0].nextRid == "1001"); assert(res.msgs[0].revision == "2"); /* Check in local db */ res = s4.db.search("", dn, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn); assert(res.msgs[0].description == undefined); assert(res.msgs[0].badPwdCount == undefined); assert(res.msgs[0].nextRid == undefined); assert(res.msgs[0].revision == "2"); /* Check in remote db */ dn2 = s3.dn("cn=toast"); attrs = new Array("description", "sambaBadPasswordCount", "sambaNextRid", "revision"); res = s3.db.search("", dn2, ldb.SCOPE_BASE, attrs); assert(res.error == 0); assert(res.msgs.length == 1); assert(res.msgs[0].dn == dn2); assert(res.msgs[0].description == "test"); assert(res.msgs[0].sambaBadPasswordCount == "4"); assert(res.msgs[0].sambaNextRid == "1001"); assert(res.msgs[0].revision == undefined); /* Delete split record */ ok = ldb.del(dn); assert(ok.error == 0); /* Check in mapped db */ res = ldb.search("", dn, ldb.SCOPE_BASE); assert(res.error == 0); assert(res.msgs.length == 0); /* Check in local db */ res = s4.db.search("", dn, ldb.SCOPE_BASE); assert(res.error == 0); assert(res.msgs.length == 0); /* Check in remote db */ res = s3.db.search("", dn2, ldb.SCOPE_BASE); assert(res.error == 0); assert(res.msgs.length == 0);}function make_dn(rdn){ return rdn + ",sambaDomainName=TESTS," + this.BASEDN;}function make_s4dn(rdn){ return rdn + "," + this.BASEDN;}var ldb = ldb_init();sys = sys_init();var ldbfile = prefix + "/" + "test.ldb";var ldburl = "tdb://" + ldbfile;var samba4 = new Object("samba4 partition info");samba4.file = prefix + "/" + "samba4.ldb";samba4.url = "tdb://" + samba4.file;samba4.BASEDN = "dc=vernstok,dc=nl";samba4.db = ldb_init();samba4.dn = make_s4dn;var samba3 = new Object("samba3 partition info");samba3.file = prefix + "/" + "samba3.ldb";samba3.url = "tdb://" + samba3.file;samba3.BASEDN = "cn=Samba3Sam";samba3.db = ldb_init();samba3.dn = make_dn;var templates = new Object("templates partition info");templates.file = prefix + "/" + "templates.ldb";templates.url = "tdb://" + templates.file;templates.BASEDN = "cn=templates";templates.db = ldb_init();sys.unlink(ldbfile);sys.unlink(samba3.file);sys.unlink(templates.file);sys.unlink(samba4.file);var ok = ldb.connect(ldburl);assert(ok);var ok = samba3.db.connect(samba3.url);assert(ok);var ok = templates.db.connect(templates.url);assert(ok);var ok = samba4.db.connect(samba4.url);assert(ok);setup_data(samba3, sys.file_load(datadir + "/" + "samba3.ldif"));setup_data(templates, sys.file_load(datadir + "/" + "provision_samba3sam_templates.ldif"));setup_modules(ldb, samba3, samba4, sys.file_load(datadir + "/" + "provision_samba3sam.ldif"));ldb = ldb_init();var ok = ldb.connect(ldburl);assert(ok);test_s3sam_search(ldb);test_s3sam_modify(ldb, samba3);sys.unlink(ldbfile);sys.unlink(samba3.file);sys.unlink(templates.file);sys.unlink(samba4.file);ldb = ldb_init();var ok = ldb.connect(ldburl);assert(ok);samba3.db = ldb_init();var ok = samba3.db.connect(samba3.url);assert(ok);templates.db = ldb_init();var ok = templates.db.connect(templates.url);assert(ok);samba4.db = ldb_init();var ok = samba4.db.connect(samba4.url);assert(ok);setup_data(templates, sys.file_load(datadir + "/" + "provision_samba3sam_templates.ldif"));setup_modules(ldb, samba3, samba4, sys.file_load(datadir + "provision_samba3sam.ldif"));ldb = ldb_init();var ok = ldb.connect(ldburl);assert(ok);test_map_search(ldb, samba3, samba4);test_map_modify(ldb, samba3, samba4);sys.unlink(ldbfile);sys.unlink(samba3.file);sys.unlink(samba4.file);return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -