fakeldap on Python-moduuli, joka tarjoaa helpon tavan pilkata LDAP backend palvelimia varten unittests. & Nbsp; Se on mahdollista määritellä etukäteen joukon hakemistomerkinnät jossa voidaan suorittaa hakuja tai asettaa kiinteitä paluuarvot LDAP kyselyt. Se toimii lasku korvaa LDAPObject luokan python-ldap-moduuli. Se toteuttaa osajoukko sallittu menetelmiä tämän luokan.
Tämä moduuli toteuttaa MockLDAP luokka, joka toimii sekä LDAPObject sekä LDAP-moduuli. Useimmat koodin ja suunnittelun on otettu Peter Sagerson erinomaista Django-auth-ldap-moduuli.
asennus
Hanki ja asenna koodi:
& Nbsp; git klooni git: //github.com/30loops/fakeldap.git
& Nbsp; cd fakeldap
& Nbsp; python setup.py asentaa
Jos haluat, voit suorittaa testit:
& Nbsp; python setup.py nosetests
Käyttö
Huomaa: Tämä koodi on vielä kokeiluvaiheessa eikä kovin testattu vielä. Joten on dokumentaatio
MockLDAP luokka korvaa LDAPObject of python-ldap-moduuli. Helpoin tapa käyttää sitä, on korvata ldap.initialize palata MockLDAP sijaan LDAPObject. Alla olevassa esimerkissä käytetään Michael Foord n Mock kirjaston saavuttamiseksi:
tuonti unittest
alkaen mock tuonti patch
alkaen fakeldap tuonti MockLDAP
_mock_ldap = MockLDAP ()
luokan YourTestCase (unittest.TestCase):
& Nbsp; def Setup (itse):
& Nbsp; # Patch jossa ldap kirjastoa käytetään:
& Nbsp; self.ldap_patcher = laastari ('app.module.ldap.initialize')
& Nbsp; self.mock_ldap = self.ldap_patcher.start ()
& Nbsp; self.mock_ldap.return_value = _mock_ldap
& Nbsp; def tearDown (itse):
& Nbsp; _mock_ldap.reset ()
& Nbsp; self.mock_ldap.stop ()
Pilkata ldap objekti toteuttaa seuraavat ldap toiminnot:
- Simple_bind_s
- Search_s
- Compare_s
- Modify_s
- Delete_s
- Add_s
- Rename_s
Tämä on esimerkki siitä, miten käyttää MockLDAP kiinteällä paluuarvot:
def test_some_ldap_group_stuff (itse):
& Nbsp; # Määrittele odotettu tuotto arvo ldap operaation
& Nbsp; return_value = ("cn = testgroup, ou = ryhmä, p = 30loops, dc = net", {
& Nbsp; "objectClass ': [" posixGroup'],
& Nbsp; "cn": "testgroup",
& Nbsp; "gidNumber": "2030",
& Nbsp;})
& Nbsp; # Rekisteröidy paluu arvo MockLDAP esineen
& Nbsp; _mock_ldap.set_return_value ("add_s ',
& Nbsp; ("cn = testgroup, ou = ryhmät, dc = 30loops, dc = net", (
& Nbsp; ("objectClass", ('posixGroup')),
& Nbsp; ("cn", "testgroup '),
& Nbsp; ("gidNumber ',' 2030 '))),
& Nbsp; (105, [], 10, []))
& Nbsp; # Tee todellinen koodia, tämä on vain esimerkki
& Nbsp; group_manager = GroupManager ()
& Nbsp; tulos = group_manager.add ("testgroup")
& Nbsp; # väittää, että paluu arvo oman menetelmän ja MockLDAP
& Nbsp; # ovat odotetusti, tästä käyttäen python-nenä n ekv () testi työkalu:
& Nbsp; eq_ (return_value, tulos)
& Nbsp; # Jokainen todellinen ldap soittaa ohjelmiston avulla saa kirjata. Voisit
& Nbsp; # valmistelee luettelon puheluista, jotka odotat myönnetään ja vertaa sitä:
& Nbsp; called_records = []
& Nbsp; called_records.append (('simple_bind_s',
& Nbsp; {"kuka": "cn = admin, dc = 30loops, dc = net", "uskottavuus": "ldaptest '}))
& Nbsp; called_records.append (('add_s ", {
& Nbsp; "dn": "cn = testgroup, ou = ryhmät, dc = 30loops, dc = net",
& Nbsp; "ennätys": [
& Nbsp; ("objectClass ', [' posixGroup ']),
& Nbsp; ("gidNumber ',' 2030 '),
& Nbsp; ("cn", "testgroup '),
& Nbsp;]}))
& Nbsp; # Ja taas testata odotettua käyttäytymistä
& Nbsp; eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
Lisäksi vahvistaa tuoton arvoista tiettyjen puhelujen, voit myös jäljitellä täydellisen LDAP-palvelimen kanssa hakemiston merkinnät:
# Luo instanssi MockLDAP kanssa valmiiksi hakemisto
tree = {
& Nbsp; "cn = admin, dc = 30loops, dc = net": {
& Nbsp; "userPassword": "ldaptest"
& Nbsp;}
}
mock_ldap = MockLDAP (puu)
record = [
& Nbsp; ("uid ',' Krito '),
& Nbsp; ("userPassword", "salaisen"),
]
# Paluuarvo odotan kun lisään uuden tallenteen hakemistoon
eq_ (
& Nbsp; (105, [], 1, []),
& Nbsp; mock_ldap.add_s ("uid = Krito, ou = ihmiset, dc = 30loops, dc = net", record)
)
# Odotettavissa Hakemisto
directory = {
& Nbsp; "cn = admin, dc = 30loops, dc = net": {"userPassword": "ldaptest"},
& Nbsp; "uid = Krito, ou = ihmiset, dc = 30loops, dc = net": {
& Nbsp; "UID": "Krito", "userPassword": "salainen"}
}
# Vertaa odotettavissa hakemistoon MockLDAP hakemisto
eq_ (hakemisto, mock_ldap.directory)
vaatimukset
- Python
Kommentteja ei löytynyt