fakeldap egy Python modul, amely egy egyszerű módja annak, hogy kigúnyolják LDAP backend szerverek a unittests. & Nbsp; Ez lehetővé teszi, hogy meghatározza előre egy sor címtárbejegyzéseket lehet lekérdezni vagy beállítani fix hozamú értékek LDAP-lekérdezések. Úgy viselkedik, mint egy csepp helyett a LDAPObject osztály a python-ldap modul. Hajtja végre egy részét a megengedett módszerek ennek az osztálynak.
Ez a modul megvalósítja a MockLDAP osztály ez egyaránt működik a LDAPObject valamint a LDAP modult. A legtöbb kódot és a design vették Peter Sagerson kiváló Django-auth-ldap modul.
Telepítés
Get és telepítse a kódot:
& Nbsp; git clone git: //github.com/30loops/fakeldap.git
& Nbsp; cd fakeldap
& Nbsp; python setup.py telepíteni
Ha azt szeretnénk, akkor a teszteket:
& Nbsp; python setup.py nosetests
Használat
Megjegyzés: Ez még kísérleti stádiumban van, és nem nagyon tesztelték, mint még. Tehát a dokumentációt
A MockLDAP osztály helyettesíti a LDAPObject a python-ldap modul. A legegyszerűbb módja, hogy használja azt, hogy felülírja ldap.initialize visszatérni MockLDAP helyett LDAPObject. Az alábbi példa Michael Foord a Mock könyvtár elérni, hogy:
import unittest
ál import javítás
re fakeldap import MockLDAP
_mock_ldap = MockLDAP ()
osztály YourTestCase (unittest.TestCase):
& Nbsp; def setup (self):
& Nbsp; # Patch ahol a ldap könyvtárat használják:
& Nbsp; self.ldap_patcher = folt ("app.module.ldap.initialize)
& Nbsp; self.mock_ldap = self.ldap_patcher.start ()
& Nbsp; self.mock_ldap.return_value = _mock_ldap
& Nbsp; def tearDown (self):
& Nbsp; _mock_ldap.reset ()
& Nbsp; self.mock_ldap.stop ()
Az ál ldap objektum megvalósítja az alábbi ldap műveleteket:
- Simple_bind_s
- Search_s
- Compare_s
- Modify_s
- Delete_s
- Add_s
- Rename_s
Ez csak egy példa, hogyan kell használni MockLDAP fix hozam értékeket:
def test_some_ldap_group_stuff (self):
& Nbsp; # Adjuk meg a várt visszatérési értéke ldap működése
& Nbsp; return_value = ("cn = testgroup, ou = group, dc = 30loops, dc = net", {
& Nbsp; "objectClass": ["posixGroup '],
& Nbsp; a továbbiakban: KN: "testgroup",
& Nbsp; "gidNumber ':' 2030 ',
& Nbsp;})
& Nbsp; # regisztrációja visszatérési érték a MockLDAP tárgy
& Nbsp; _mock_ldap.set_return_value ("add_s",
& Nbsp; ("cn = testgroup, ou = csoportok, dc = 30loops, dc = net", (
& Nbsp; ("objectClass", ("posixGroup")),
& Nbsp; ("KN", "testgroup"),
& Nbsp; ("gidNumber ',' 2030 '))),
& Nbsp; (105, [], 10, []))
& Nbsp; # Fuss a tényleges kódot, ez csak egy példa
& Nbsp; group_manager = GroupManager ()
& Nbsp; result = group_manager.add ("testgroup")
& Nbsp; # állítják, hogy a visszatérési értéke a módszer és a MockLDAP
& Nbsp; # jelentése a vártnál, itt a python-orr EQ () vizsgálati eszköz:
& Nbsp; eq_ (return_value, eredmény)
& Nbsp; # Minden aktuális ldap hívja a szoftver segítségével lesz rögzítve. Tudnál
& Nbsp; # listát készít a hívásokat, amelyeket számíthatnak arra, hogy ki és hasonlítsa:
& Nbsp; called_records = []
& Nbsp; called_records.append (("simple_bind_s",
& Nbsp; {", aki": "cn = admin, dc = 30loops, dc = net", "hitele": "ldaptest '}))
& Nbsp; called_records.append (("add_s", {
& Nbsp; "DN": "cn = testgroup, ou = csoportok, dc = 30loops, dc = net",
& Nbsp; "rekord": [
& Nbsp; ("objectClass", ['posixGroup']),
& Nbsp; ("gidNumber ',' 2030 '),
& Nbsp; ("KN", "testgroup"),
& Nbsp;]}))
& Nbsp; # És újra tesztelni a várható viselkedését
& Nbsp; eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
Emellett a rögzítő visszatérítési értékek egyedi felhívásokat, akkor is utánozni a teljes ldap szerver egy könyvtárat a bejegyzés:
# Egy példányának létrehozása MockLDAP egy előre beállított könyvtár
tree = {
& Nbsp; "cn = admin, dc = 30loops, dc = net": {
& Nbsp; "userPassword": "ldaptest"
& Nbsp;}
}
mock_ldap = MockLDAP (fa)
rekord = [
& Nbsp; ("uid ',' crito"),
& Nbsp; ("userPassword", "titkos"),
]
# A visszatérési érték azt várom, mikor egy újabb rekord a könyvtárban
eq_ (
& Nbsp; (105, [], 1, []),
& Nbsp; mock_ldap.add_s ("uid = crito, ou = emberek, dc = 30loops, dc = net", rekord)
)
# A várható könyvtár
directory = {
& Nbsp; "cn = admin, dc = 30loops, dc = net": {"userPassword": "ldaptest"},
& Nbsp; "uid = crito, ou = emberek, dc = 30loops, dc = net": {
& Nbsp; "uid": "crito", "userPassword": "titkos"}
}
# Összehasonlítása a várt könyvtár a MockLDAP könyvtár
eq_ (könyvtár, mock_ldap.directory)
követelmények :
- Python
Hozzászólás nem található