⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samba3sam.py

📁 samba最新软件
💻 PY
📖 第 1 页 / 共 3 页
字号:
        # Search by negated disjunction of local and remote attribute        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(!(|(revision=x)(lastLogon=y)))", attrs=attrs)        self.assertEquals(len(res), 4)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "x")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[1]["dnsHostName"], "z")        self.assertEquals(res[1]["lastLogon"], "z")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[2])        self.assertEquals(res[2]["lastLogon"], "z")        print "Search by complex parse tree"        attrs = ["dnsHostName", "lastLogon"]        res = self.ldb.search(expression="(|(&(revision=x)(dnsHostName=x))(!(&(description=x)(nextRid=y)))(badPwdCount=y))", attrs=attrs)        self.assertEquals(len(res), 6)        self.assertEquals(str(res[0].dn), self.samba4.dn("cn=B"))        self.assertTrue(not "dnsHostName" in res[0])        self.assertEquals(res[0]["lastLogon"], "y")        self.assertEquals(str(res[1].dn), self.samba4.dn("cn=X"))        self.assertEquals(res[1]["dnsHostName"], "x")        self.assertEquals(res[1]["lastLogon"], "x")        self.assertEquals(str(res[2].dn), self.samba4.dn("cn=A"))        self.assertTrue(not "dnsHostName" in res[2])        self.assertEquals(res[2]["lastLogon"], "x")        self.assertEquals(str(res[3].dn), self.samba4.dn("cn=Z"))        self.assertEquals(res[3]["dnsHostName"], "z")        self.assertEquals(res[3]["lastLogon"], "z")        self.assertEquals(str(res[4].dn), self.samba4.dn("cn=C"))        self.assertTrue(not "dnsHostName" in res[4])        self.assertEquals(res[4]["lastLogon"], "z")        # Clean up        dns = [self.samba4.dn("cn=%s" % n) for n in ["A","B","C","X","Y","Z"]]        for dn in dns:            self.ldb.delete(dn)    def test_map_modify_local(self):        """Modification of local records."""        # Add local record        dn = "cn=test,dc=idealx,dc=org"        self.ldb.add({"dn": dn,                  "cn": "test",                 "foo": "bar",                 "revision": "1",                 "description": "test"})        # Check it's there        attrs = ["foo", "revision", "description"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["foo"], "bar")        self.assertEquals(res[0]["revision"], "1")        self.assertEquals(res[0]["description"], "test")        # Check it's not in the local db        res = self.samba4.db.search(expression="(cn=test)", scope=SCOPE_DEFAULT, attrs=attrs)        self.assertEquals(len(res), 0)        # Check it's not in the remote db        res = self.samba3.db.search(expression="(cn=test)", scope=SCOPE_DEFAULT, attrs=attrs)        self.assertEquals(len(res), 0)        # Modify local record        ldif = """dn: """ + dn + """replace: foofoo: bazreplace: descriptiondescription: foo"""        self.ldb.modify_ldif(ldif)        # Check in local db        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["foo"], "baz")        self.assertEquals(res[0]["revision"], "1")        self.assertEquals(res[0]["description"], "foo")        # Rename local record        dn2 = "cn=toast,dc=idealx,dc=org"        self.ldb.rename(dn, dn2)        # Check in local db        res = self.ldb.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["foo"], "baz")        self.assertEquals(res[0]["revision"], "1")        self.assertEquals(res[0]["description"], "foo")        # Delete local record        self.ldb.delete(dn2)        # Check it's gone        res = self.ldb.search(dn2, scope=SCOPE_BASE)        self.assertEquals(len(res), 0)    def test_map_modify_remote_remote(self):        """Modification of remote data of remote records"""        # Add remote record        dn = self.samba4.dn("cn=test")        dn2 = self.samba3.dn("cn=test")        self.samba3.db.add({"dn": dn2,                    "cn": "test",                   "description": "foo",                   "sambaBadPasswordCount": "3",                   "sambaNextRid": "1001"})        # Check it's there        attrs = ["description", "sambaBadPasswordCount", "sambaNextRid"]        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "foo")        self.assertEquals(res[0]["sambaBadPasswordCount"], "3")        self.assertEquals(res[0]["sambaNextRid"], "1001")        # Check in mapped db        attrs = ["description", "badPwdCount", "nextRid"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "foo")        self.assertEquals(res[0]["badPwdCount"], "3")        self.assertEquals(res[0]["nextRid"], "1001")        # Check in local db        res = self.samba4.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 0)        # Modify remote data of remote record        ldif = """dn: """ + dn + """replace: descriptiondescription: testreplace: badPwdCountbadPwdCount: 4"""        self.ldb.modify_ldif(ldif)        # Check in mapped db        attrs = ["description", "badPwdCount", "nextRid"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["badPwdCount"], "4")        self.assertEquals(res[0]["nextRid"], "1001")        # Check in remote db        attrs = ["description", "sambaBadPasswordCount", "sambaNextRid"]        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["sambaBadPasswordCount"], "4")        self.assertEquals(res[0]["sambaNextRid"], "1001")        # Rename remote record        dn2 = self.samba4.dn("cn=toast")        self.ldb.rename(dn, dn2)        # Check in mapped db        dn = dn2        attrs = ["description", "badPwdCount", "nextRid"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["badPwdCount"], "4")        self.assertEquals(res[0]["nextRid"], "1001")        # Check in remote db         dn2 = self.samba3.dn("cn=toast")        attrs = ["description", "sambaBadPasswordCount", "sambaNextRid"]        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["sambaBadPasswordCount"], "4")        self.assertEquals(res[0]["sambaNextRid"], "1001")        # Delete remote record        self.ldb.delete(dn)        # Check in mapped db        res = self.ldb.search(dn, scope=SCOPE_BASE)        self.assertEquals(len(res), 0)        # Check in remote db        res = self.samba3.db.search(dn2, scope=SCOPE_BASE)        self.assertEquals(len(res), 0)    def test_map_modify_remote_local(self):        """Modification of local data of remote records"""        # Add remote record (same as before)        dn = self.samba4.dn("cn=test")        dn2 = self.samba3.dn("cn=test")        self.samba3.db.add({"dn": dn2,                    "cn": "test",                   "description": "foo",                   "sambaBadPasswordCount": "3",                   "sambaNextRid": "1001"})        # Modify local data of remote record        ldif = """dn: """ + dn + """add: revisionrevision: 1replace: descriptiondescription: test"""        self.ldb.modify_ldif(ldif)        # Check in mapped db        attrs = ["revision", "description"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["revision"], "1")        # Check in remote db        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "test")        self.assertTrue(not "revision" in res[0])        # Check in local db        res = self.samba4.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertTrue(not "description" in res[0])        self.assertEquals(res[0]["revision"], "1")        # Delete (newly) split record        self.ldb.delete(dn)    def test_map_modify_split(self):        """Testing modification of split records"""        # Add split record        dn = self.samba4.dn("cn=test")        dn2 = self.samba3.dn("cn=test")        self.ldb.add({            "dn": dn,            "cn": "test",            "description": "foo",            "badPwdCount": "3",            "nextRid": "1001",            "revision": "1"})        # Check it's there        attrs = ["description", "badPwdCount", "nextRid", "revision"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "foo")        self.assertEquals(res[0]["badPwdCount"], "3")        self.assertEquals(res[0]["nextRid"], "1001")        self.assertEquals(res[0]["revision"], "1")        # Check in local db        res = self.samba4.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertTrue(not "description" in res[0])        self.assertTrue(not "badPwdCount" in res[0])        self.assertTrue(not "nextRid" in res[0])        self.assertEquals(res[0]["revision"], "1")        # Check in remote db        attrs = ["description", "sambaBadPasswordCount", "sambaNextRid", "revision"]        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "foo")        self.assertEquals(res[0]["sambaBadPasswordCount"], "3")        self.assertEquals(res[0]["sambaNextRid"], "1001")        self.assertTrue(not "revision" in res[0])        # Modify of split record        ldif = """dn: """ + dn + """replace: descriptiondescription: testreplace: badPwdCountbadPwdCount: 4replace: revisionrevision: 2"""        self.ldb.modify_ldif(ldif)        # Check in mapped db        attrs = ["description", "badPwdCount", "nextRid", "revision"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["badPwdCount"], "4")        self.assertEquals(res[0]["nextRid"], "1001")        self.assertEquals(res[0]["revision"], "2")        # Check in local db        res = self.samba4.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertTrue(not "description" in res[0])        self.assertTrue(not "badPwdCount" in res[0])        self.assertTrue(not "nextRid" in res[0])        self.assertEquals(res[0]["revision"], "2")        # Check in remote db        attrs = ["description", "sambaBadPasswordCount", "sambaNextRid", "revision"]        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["sambaBadPasswordCount"], "4")        self.assertEquals(res[0]["sambaNextRid"], "1001")        self.assertTrue(not "revision" in res[0])        # Rename split record        dn2 = self.samba4.dn("cn=toast")        self.ldb.rename(dn, dn2)        # Check in mapped db        dn = dn2        attrs = ["description", "badPwdCount", "nextRid", "revision"]        res = self.ldb.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["badPwdCount"], "4")        self.assertEquals(res[0]["nextRid"], "1001")        self.assertEquals(res[0]["revision"], "2")        # Check in local db        res = self.samba4.db.search(dn, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn)        self.assertTrue(not "description" in res[0])        self.assertTrue(not "badPwdCount" in res[0])        self.assertTrue(not "nextRid" in res[0])        self.assertEquals(res[0]["revision"], "2")        # Check in remote db        dn2 = self.samba3.dn("cn=toast")        attrs = ["description", "sambaBadPasswordCount", "sambaNextRid", "revision"]        res = self.samba3.db.search(dn2, scope=SCOPE_BASE, attrs=attrs)        self.assertEquals(len(res), 1)        self.assertEquals(str(res[0].dn), dn2)        self.assertEquals(res[0]["description"], "test")        self.assertEquals(res[0]["sambaBadPasswordCount"], "4")        self.assertEquals(res[0]["sambaNextRid"], "1001")        self.assertTrue(not "revision" in res[0])        # Delete split record        self.ldb.delete(dn)        # Check in mapped db        res = self.ldb.search(dn, scope=SCOPE_BASE)        self.assertEquals(len(res), 0)        # Check in local db        res = self.samba4.db.search(dn, scope=SCOPE_BASE)        self.assertEquals(len(res), 0)        # Check in remote db        res = self.samba3.db.search(dn2, scope=SCOPE_BASE)        self.assertEquals(len(res), 0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -