fakeldap yra Python modulis, kuris suteikia paprastą būdą tyčiotis LDAP serveriai posistemės jūsų unittests & nbsp;. Tai leidžia nustatyti iš anksto iš katalogų įrašų, kurie gali būti apskundžiamas ar yra nustatomos grąžinimo vertybes LDAP užklausos rinkinį. Jis veikia kaip pakeitimo lašas už LDAPObject klasei, python-ldap modulį. Ji įgyvendina iš leidžiamų metodų šioje klasėje poaibis.
Šis modulis realizuoja MockLDAP klasę, kuri veikia tiek kaip LDAPObject taip pat LDAP modulį. Dauguma kodą ir dizainą buvo paimtas iš Peterio Sagerson puikų Django-auth-ldap modulį.
Diegimas
Gauk ir įdiegti kodą:
& Nbsp; Git Git klonas: //github.com/30loops/fakeldap.git
& Nbsp; CD fakeldap
& Nbsp; pitonas setup.py įdiegti
Jei norite, galite paleisti bandymus:
& nbsp; pitonas setup.py nosetests
Naudojimas
Pastaba: , šis kodas yra vis dar eksperimentinis ir nelabai išbandyti kol kas. Taigi yra dokumentai,
MockLDAP klasė pakeičia į python-ldap modulio LDAPObject. Paprasčiausias būdas jį naudoti, yra perrašyti ldap.initialize grįžti MockLDAP vietoj LDAPObject. Toliau pateiktas pavyzdys naudoja Michael Foord anketa Mock biblioteką pasiekti, kad:
importo unittest
nuo juoktis importo pleistras
nuo fakeldap importo MockLDAP
_mock_ldap = MockLDAP ()
klasė YourTestCase (unittest.TestCase):
& Nbsp; Def setup (si):
& Nbsp; # pleistras kur LDAP biblioteka bus naudojama:
& Nbsp; self.ldap_patcher = pleistras ("app.module.ldap.initialize)
& Nbsp; self.mock_ldap = self.ldap_patcher.start ()
& Nbsp; self.mock_ldap.return_value = _mock_ldap
& Nbsp; Def teardown (si):
& Nbsp; _mock_ldap.reset ()
& Nbsp; self.mock_ldap.stop ()
Maketas LDAP objektas įgyvendina šiuos LDAP operacijas:
- Simple_bind_s
- search_s
- compare_s
- modify_s
- delete_s
- add_s
- rename_s
Tai pavyzdys, kaip naudoti MockLDAP su fiksuotais grąžinimo verčių:
Def test_some_ldap_group_stuff (si):
& Nbsp; # Apibrėžkite numatomą grįžimo vertės LDAP operacija
& Nbsp; return_value = ("CN = testgroup, ou = grupė, DC = 30loops, DC = grynasis", {
& Nbsp; "objectClass": ["posixGroup '],
& Nbsp; "KN": "testgroup"
& Nbsp; "gidNumber": "2030",
& Nbsp;})
& Nbsp; # Registruotis grąžinimo vertę su MockLDAP objektą
& Nbsp; _mock_ldap.set_return_value ("add_s"
& Nbsp; (CN = testgroup, ou = grupių, DC = 30loops, DC = grynasis ", (
& Nbsp; (objectClass "(" posixGroup))
& Nbsp; (KN "," testgroup),
& Nbsp; (gidNumber "," 2030 "))),
& Nbsp; (105, [], 10, []))
& Nbsp; # Vykdyk tikrąjį kodą, tai tik pavyzdys
& Nbsp; group_manager = GroupManager ()
& Nbsp; rezultatas = group_manager.add ("testgroup)
& Nbsp; # teigia, kad grįžimas vertė savo metodą ir MockLDAP
& Nbsp; # yra taip, kaip tikėtasi, čia naudodamas python-nosies anketa up () bandymo įrankį:
& Nbsp; eq_ (return_value, rezultatas)
& Nbsp; # Kiekvienas tikrasis LDAP skambinti jūsų programinė įranga leidžia gauna užfiksuotas. Tu galėtum
& Nbsp; # parengti skambučių, kad jūs tikitės būti išduodamas ir palyginti ją sąrašas:
& nbsp; called_records = []
& Nbsp; called_records.append (('simple_bind_s "
& Nbsp; {"kas": "CN = administratorius, DC = 30loops, DC = grynasis", "kred": "ldaptest"}))
& Nbsp; called_records.append (('add_s ", {
& Nbsp; "eq": "CN = testgroup, ou = grupių, DC = 30loops, DC = grynasis",
& Nbsp; "įrašas": [
& Nbsp; (objectClass "['posixGroup']),
& Nbsp; (gidNumber "," 2030 "),
& Nbsp; (KN "," testgroup),
& Nbsp;]}))
& Nbsp; # Ir vėl patikrinti tikėtiną elgesį
& Nbsp; eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
Be nustatymo grąžinimo vertes konkrečius kvietimus, taip pat galite imituoti visą LDAP serveris su įrašų kataloge:
# Sukuria MockLDAP instancija su nustatytu kataloge
Medis = {
& Nbsp; "CN = administratorius, DC = 30loops, DC = grynasis": {
& Nbsp; "UserPassword": "ldaptest"
& Nbsp;}
}
mock_ldap = MockLDAP (medis)
įrašo = [
& Nbsp; (uid ',' crito),
& Nbsp; (UserPassword "," Paslaptis "),
]
# Grąžina vertė Tikiuosi, kai aš pridėti dar vieną įrašą į katalogą
eq_ (
& Nbsp; (105, [], 1, []),
& nbsp; mock_ldap.add_s (uid = crito, ou = žmonės, DC = 30loops, DC = grynasis ", įrašo)
)
# Tikimasi katalogas
katalogas = {
& Nbsp; "CN = administratorius, DC = 30loops, DC = grynasis": {"UserPassword": "ldaptest"},
& Nbsp; "UID = crito, ou = žmonės, DC = 30loops, DC = grynasis": {
& Nbsp; "UID": "crito", "UserPassword": "paslaptis"}
}
# Palyginti tikimasi katalogą su MockLDAP kataloge
eq_ (katalogas, mock_ldap.directory)
Reikalavimai
- Python,
Komentarai nerastas