.
fakeldap bir Python sizin unittests LDAP arka uç sunucuları alay için basit bir yol sağlar modül & nbsp; Bu mümkün sorgulanan veya sorguları LDAP sabit dönüş değerlerini ayarlanabilir dizin girdileri ayarlıyoruz bir dizi tanımlamak için yapar. Bu piton-ldap modülünün LDAPObject sınıfı için yedek bir damla olarak görev yapar. Bu sınıfın izin verilen yöntemlere bir alt kümesi uygular.
Bu modül, LDAPObject olarak ldap modülü gibi çalışır MockLDAP sınıfı uygular. Kod ve tasarım çoğu Peter Sagerson mükemmel django-auth-ldap modülünden alınmıştır.
Kurulum
Get ve kod yükleyin:
& Nbsp; git clone git: //github.com/30loops/fakeldap.git
& Nbsp; cd fakeldap
& Nbsp; python setup.py install
Eğer isterseniz, testleri çalıştırabilirsiniz:
& Nbsp; python setup.py nosetests
Kullanım
Not: Bu kod hala deneysel ve çok henüz olarak test değildir. Yani belgelerdir
MockLDAP sınıf python-ldap modülünün LDAPObject değiştirir. kullanmak için en kolay yolu, yerine LDAPObject of MockLDAP dönmek için ldap.initialize üzerine yazılmasıdır. Aşağıdaki örnek bunu başarmak için Michael Foord en Mock kitaplığını kullanır:
ithalat unittest
sahte ithalat yama
fakeldap ithalat MockLDAP gelen
_mock_ldap = MockLDAP ()
sınıf YourTestCase (unittest.TestCase):
& Nbsp; def kurulumu (self):
& Nbsp; # Patch ldap kütüphanesi kullanıldığı:
& Nbsp; self.ldap_patcher = patch ('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 ()
alay ldap nesnesi aşağıdaki ldap işlemleri uygular:
- Simple_bind_s
- Search_s
- Compare_s
- Modify_s
- Delete_s
- Add_s
- Rename_s
Bu sabit getiri değerleri ile MockLDAP nasıl kullanılacağı bir örnek:
def test_some_ldap_group_stuff (self):
& Nbsp; # ldap çalışması için beklenen getiri değerini tanımlayın
& Nbsp; {return_value = ("cn = TestGroup, ou = grup, dc = 30loops, DC = net"
Ve nbsp; 'objectClass': ['posixGroup'],
& Nbsp; 'cn': 'TestGroup'
& Nbsp; 'gidNumber': '2030',
& Nbsp;})
& Nbsp; # MockLDAP nesne ile dönüş değeri kaydol
& Nbsp; _mock_ldap.set_return_value ('add_s'
& Nbsp; ("cn = TestGroup, ou = gruplar, dc = 30loops, dc = net", (
& Nbsp ('objectClass' ('posixGroup')),
& Nbsp ('CN', 'TestGroup'),
& Nbsp ('gidNumber', '2030'))),
& Nbsp; (105, [], 10, []))
& Nbsp; # gerçek kodu çalıştırın, bu sadece bir örnektir
& Nbsp; group_manager = GroupManager ()
& Nbsp; sonuç = group_manager.add ("TestGroup")
& Nbsp; # iddia senin yöntemin ve MockLDAP dönüş değeri
& Nbsp; burada python-burnun eq () testi aracını kullanarak, beklendiği gibi # şunlardır:
& Nbsp; eq_ (return_value, sonuç)
& Nbsp; # Her gerçek ldap yazılım kaydedildi alır yapar diyoruz. Yapabilirsin
& Nbsp; # Eğer çıkarılan ve mukayese bekliyoruz aramaların bir listesini hazırlayın:
& Nbsp; called_records = []
& Nbsp; called_records.append (('simple_bind_s'
& Nbsp; {'kim': 'CN = yönetici, dc = 30loops, DC = net', 'cred': 'ldaptest'}))
Ve nbsp; called_records.append (('add_s', {
& Nbsp; 'dn': 'CN = TestGroup, ou = gruplar, dc = 30loops, dc = net ",
& Nbsp; 'rekor': [
Ve nbsp ('objectClass' ['posixGroup']),
& Nbsp ('gidNumber', '2030'),
& Nbsp ('CN', 'TestGroup'),
Ve nbsp]}))
& Nbsp; # Ve yine beklenen davranışlarını test
& Nbsp; eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
Belirli aramalar için dönüş değerlerini tespit yanı sıra, aynı zamanda girişlerinin bir dizin ile tam bir ldap sunucusu taklit edebilir:
# Önceden ayarlanmış bir dizin ile MockLDAP bir örneğini oluşturun
ağaç = {
& Nbsp; "cn = yönetici, dc = 30loops, DC = net": {
& Nbsp; "userPassword": "ldaptest"
& Nbsp;}
}
mock_ldap = MockLDAP (ağaç)
kayıt = [
& Nbsp; ('uid', 'Crito'),
& Nbsp; ('userPassword', 'gizli'),
]
Ben dizine başka kayıt eklediğinizde beklediğim # dönüş değeri
eq_ (
& Nbsp; (105, [], 1, []),
& Nbsp; mock_ldap.add_s ("uid = Crito, ou = insanlar, dc = 30loops, dc = net", rekor)
)
# Beklenen dizin
directory = {
& Nbsp; "cn = yönetici, dc = 30loops, DC = net": {"userPassword": "ldaptest"},
& Nbsp; "uid = Crito, ou = insanlar, dc = 30loops, DC = net": {
& Nbsp; "uid": "Crito", "userPassword": "gizli"}
}
# MockLDAP dizini ile beklenen dizin karşılaştırın
eq_ (dizin, mock_ldap.directory)
Gereksinimleri :
- Python
Yorum Bulunamadı