fakeldap is 'n Python module wat 'n eenvoudige manier om LDAP backend bediener spot vir jou unittests bied. & Nbsp; Dit maak dit moontlik om vooraf 'n stel van die gids inskrywings wat kan bevraagteken word of 'n stel vaste terugkeer waardes navrae LDAP definieer. Dit dien as 'n druppel in die vervanging vir die LDAPObject klas van die python-LDAP module. Dit implemente 'n subset van die toegelate metodes van hierdie klas.
Hierdie module implemente die MockLDAP klas wat beide funksioneer as die LDAPObject sowel as die LDAP module. Die meeste van die kode en ontwerp is geneem uit Peter Sagerson se uitstekende Django-auth-LDAP module.
Installasie
Te kry en te installeer die kode:
& Nbsp; git kloon git: //github.com/30loops/fakeldap.git
& Nbsp; cd fakeldap
& Nbsp; python setup.py installeer
As jy wil, kan jy die toetse uit te voer:
& Nbsp; python setup.py nosetests
Gebruik
Nota: Hierdie kode is steeds eksperimentele en nie baie getoets as van nog. So is die dokumentasie
Die MockLDAP klas vervang die LDAPObject van die python-LDAP module. Die maklikste manier om dit te gebruik, is om ldap.initialize om MockLDAP terug in plaas van LDAPObject oorskryf. Die voorbeeld hieronder gebruik Mock biblioteek Michael Foord se om dit te bereik:
invoer unittest
van mock invoer kol
van fakeldap invoer MockLDAP
_mock_ldap = MockLDAP ()
klas YourTestCase (unittest.TestCase):
& Nbsp; def Setup (self):
& Nbsp; # Patch waar die LDAP biblioteek gebruik word:
& Nbsp; self.ldap_patcher = pleister ('app.module.ldap.initialize')
& Nbsp; self.mock_ldap = self.ldap_patcher.start ()
& Nbsp; self.mock_ldap.return_value = _mock_ldap
& Nbsp; def tear down (self):
& Nbsp; _mock_ldap.reset ()
& Nbsp; self.mock_ldap.stop ()
Die spot LDAP voorwerp implemente die volgende LDAP bedrywighede:
- Simple_bind_s
- Search_s
- Compare_s
- Modify_s
- Delete_s
- Add_s
- Rename_s
Dit is 'n voorbeeld hoe om MockLDAP gebruik met vaste terugkeer waardes:
def test_some_ldap_group_stuff (self):
& Nbsp; # Definieer die verwagte opbrengs waarde vir die LDAP werking
& Nbsp; return_value = ("cn = testgroup, ou = groep, DC = 30loops, DC = netto" {
& Nbsp; 'voorwerpklas': ['posixGroup'],
& Nbsp; 'cn ":" testgroup,
& Nbsp; 'gidNumber ":" 2030,
& Nbsp;})
& Nbsp; # Registreer 'n terugkeer waarde van die voorwerp MockLDAP
& Nbsp; _mock_ldap.set_return_value ('add_s,
& Nbsp; ("cn = testgroup, ou = groepe, DC = 30loops, DC = netto", (
& Nbsp; ('voorwerpklas, (' posixGroup ')),
& Nbsp; ('cn', 'testgroup'),
& Nbsp; ('gidNumber', '2030'))),
& Nbsp; (105, [], 10 []))
& Nbsp; # Begin jou werklike kode, dit is net 'n voorbeeld
& Nbsp; group_manager = groupmanager ()
& Nbsp; gevolg = group_manager.add ("testgroup")
& Nbsp; # beweer dat die terugkeer waarde van jou metode en van die MockLDAP
& Nbsp; # is as wat verwag is, hier in met python-neus se EQ () toets hulpmiddel:
& Nbsp; eq_ (return_value, gevolg)
& Nbsp; # Elke werklike LDAP bel jou sagteware maak kry aangeteken. Jy kan
& Nbsp; # berei 'n lys van oproepe wat jy verwag om te uitgereik word en dit vergelyk:
& Nbsp; called_records = []
& Nbsp; called_records.append (('simple_bind_s,
& Nbsp; {'wat': 'cn = admin, DC = 30loops, DC = netto "," goeding ":" ldaptest'}))
& Nbsp; called_records.append (('add_s, {
& Nbsp; 'dn': 'cn = testgroup, ou = groepe, DC = 30loops, DC = netto "
& Nbsp; 'n rekord ': [
& Nbsp; ('voorwerpklas, [' posixGroup ']),
& Nbsp; ('gidNumber', '2030'),
& Nbsp; ('cn', 'testgroup'),
& Nbsp;]}))
& Nbsp; # En weer die verwagte gedrag te toets
& Nbsp; eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
Behalwe van die vasstelling van terugkeer waardes vir spesifieke oproepe, kan jy ook 'n volledige boots LDAP bediener met 'n gids van inskrywings:
# Skep 'n geval van MockLDAP met 'n voorafbepaalde gids
boom = {
& Nbsp; "cn = admin, DC = 30loops, DC = netto": {
& Nbsp; "userPassword": "ldaptest"
& Nbsp;}
}
mock_ldap = MockLDAP (boom)
rekord = [
& Nbsp; ('uid', 'crito'),
& Nbsp; ('userPassword "," geheim'),
]
# Die opbrengs waarde verwag ek toe ek voeg nog 'n rekord na die gids
eq_ (
& Nbsp; (105, [], 1, []),
& Nbsp; mock_ldap.add_s ("uid = crito, ou mense = DC = 30loops, DC = netto", rekord)
)
# Die verwagte gids
directory = {
& Nbsp; "cn = admin, DC = 30loops, DC = netto": {"userPassword": "ldaptest"},
& Nbsp; "uid = crito, ou mense = DC = 30loops, DC = netto": {
& Nbsp; "uid": "crito", "userPassword": "geheim"}
}
# Vergelyk die verwagte gids met die MockLDAP gids
eq_ (gids, mock_ldap.directory)
Vereistes :
- Python
Kommentaar nie gevind