fakeldap είναι μια ενότητα Python που παρέχει έναν απλό τρόπο για να κοροϊδεύει τους διακομιστές LDAP backend για unittests σας & nbsp?. Καθιστά δυνατό να καθοριστούν εκ των προτέρων μια σειρά από καταχωρήσεις καταλόγου που μπορούν να ερωτηθούν ή να ρυθμίσετε τις τιμές σταθερή απόδοση σε LDAP ερωτήματα. Δρα ως πτώση σε αντικατάσταση για την κατηγορία LDAPObject της μονάδας python-LDAP. Εφαρμόζει ένα υποσύνολο των επιτρέπονται μεθόδους αυτής της κατηγορίας.
Αυτή η μονάδα υλοποιεί την κατηγορία MockLDAP που λειτουργεί τόσο ως LDAPObject, καθώς και το δομοστοιχείο LDAP. Το μεγαλύτερο μέρος του κώδικα και το σχεδιασμό έχει ληφθεί από την εξαιρετική μονάδα Django-auth-LDAP Peter Sagerson του.
installation
Αποκτήστε και εγκαταστήστε τον κωδικό:
& Nbsp? GIT κλώνος GIT: //github.com/30loops/fakeldap.git
& Nbsp? Cd fakeldap
& Nbsp? Python setup.py εγκαταστήσετε
Αν θέλετε, μπορείτε να εκτελέσετε τις δοκιμές:
& Nbsp? Nosetests python setup.py
Χρήση
Σημείωση: Αυτός ο κώδικας είναι ακόμα σε πειραματικό στάδιο και δεν είναι πολύ δοκιμαστεί από ακόμα. Έτσι είναι η τεκμηρίωση
Η τάξη MockLDAP αντικαθιστά το LDAPObject της μονάδας python-LDAP. Ο ευκολότερος τρόπος για να το χρησιμοποιήσετε, είναι να αντικαταστήσετε ldap.initialize να επιστρέψει MockLDAP αντί LDAPObject. Το παρακάτω παράδειγμα χρησιμοποιεί Mock βιβλιοθήκη του Michael Foord να επιτευχθεί αυτό:
unittest εισαγωγής
από ψευδο-μπάλωμα εισαγωγής
από fakeldap MockLDAP εισαγωγής
_mock_ldap = MockLDAP ()
κατηγορία YourTestCase (unittest.TestCase):
& Nbsp? Ρύθμιση ευκρίνειας (αυτο):
& Nbsp? # Patch όπου χρησιμοποιείται η βιβλιοθήκη LDAP:
& Nbsp? Self.ldap_patcher = επίθεμα («app.module.ldap.initialize»)
& Nbsp? Self.mock_ldap = self.ldap_patcher.start ()
& Nbsp? Self.mock_ldap.return_value = _mock_ldap
& Nbsp? Def λύσιμο (αυτο):
& Nbsp? _mock_ldap.reset ()
& Nbsp? Self.mock_ldap.stop ()
Η μακέτα αντικείμενο LDAP υλοποιεί τις ακόλουθες εργασίες LDAP:
- Simple_bind_s
- Search_s
- Compare_s
- Modify_s
- Delete_s
- Add_s
- Rename_s
Αυτό είναι ένα παράδειγμα πώς να χρησιμοποιήσετε MockLDAP με τις αξίες σταθερής απόδοσης:
def test_some_ldap_group_stuff (αυτο):
& Nbsp? # Ορίστε την αναμενόμενη τιμή επιστροφής για τη λειτουργία LDAP
& Nbsp? Return_value = ("cn = testgroup, ou = ομάδα, dc = 30loops, dc = καθαρή", {
& Nbsp? "ObjectClass»: ['posixGroup »],
& Nbsp? «ΣΟ»: «testgroup»,
& Nbsp? "GidNumber»: «μέχρι το 2030»,
& Nbsp?})
& Nbsp? # Καταχωρήστε μια τιμή επιστροφής με το αντικείμενο MockLDAP
& Nbsp? _mock_ldap.set_return_value («Add_s»,
& Nbsp? ("Cn = testgroup, ou = ομάδες, dc = 30loops, dc = καθαρό", (
& Nbsp? («ObjectClass», («posixGroup»)),
& Nbsp? («ΣΟ», «testgroup»),
& Nbsp? («GidNumber ',' 2030 '))),
& Nbsp? (105, [], 10, []))
& Nbsp? # Τρέξτε πραγματικό κώδικα σας, αυτό είναι μόνο ένα παράδειγμα
& Nbsp? Group_manager = GroupManager ()
& Nbsp? = Αποτέλεσμα group_manager.add ("testgroup")
& Nbsp? # Ισχυρίζονται ότι η τιμή επιστροφής της μεθόδου και της MockLDAP
& Nbsp? # Είναι, όπως αναμενόταν, εδώ χρησιμοποιώντας eq () εργαλείο ελέγχου python-μύτη του:
& Nbsp? Eq_ (return_value, αποτέλεσμα)
& Nbsp? # Κάθε πραγματική LDAP καλέσετε το λογισμικό σας κάνει παίρνει καταγράφονται. Θα μπορούσες
& Nbsp? # Ετοιμάσει μια λίστα με τις κλήσεις που αναμένετε να εκδοθεί και να το συγκρίνετε:
& Nbsp? Called_records = []
& Nbsp? Called_records.append ((«simple_bind_s»,
& Nbsp? {«Ποιος»: «cn = διαχειριστή, dc = 30loops, dc = δίχτυ», «πιστοποιήσεων»: «ldaptest '}))
& Nbsp? Called_records.append ((«add_s», {
& Nbsp? "DN»: «cn = testgroup, ou = ομάδες, dc = 30loops, dc = καθαρή»,
& Nbsp? «Ρεκόρ»: [
& Nbsp? («ObjectClass», [«posixGroup»]),
& Nbsp? («GidNumber ',' 2030 '),
& Nbsp? («ΣΟ», «testgroup»),
& Nbsp?]}))
& Nbsp? # Και πάλι δοκιμάσει την αναμενόμενη συμπεριφορά
& Nbsp? Eq_ (called_records, _mock_ldap.ldap_methods_called_with_arguments ())
Εκτός από τον καθορισμό τιμών επιστροφής για τις ειδικές προσκλήσεις, μπορείτε επίσης να μιμηθεί ένα πλήρες διακομιστή LDAP με έναν κατάλογο καταχωρήσεων:
# Δημιουργήστε ένα στιγμιότυπο του MockLDAP με ένα προκαθορισμένο κατάλογο
δέντρο = {
& Nbsp? "Cn = διαχειριστή, dc = 30loops, dc = καθαρή": {
& Nbsp? "UserPassword": "ldaptest"
& Nbsp?}
}
mock_ldap = MockLDAP (δέντρο)
ρεκόρ = [
& Nbsp? ("Uid», «Κρίτωνα»),
& Nbsp? («UserPassword», «μυστική»),
]
# Η τιμή επιστροφής περιμένω πότε μπορώ να προσθέσω ένα ακόμα ρεκόρ στον κατάλογο
eq_ (
& Nbsp? (105, [], 1 []),
& Nbsp? Mock_ldap.add_s ("uid = Κρίτωνα, ou = άνθρωποι, dc = 30loops, dc = καθαρή", εγγραφή)
)
# Η αναμενόμενη κατάλογο
κατάλογο = {
& Nbsp? "Cn = διαχειριστή, dc = 30loops, dc = καθαρή": {"UserPassword": "ldaptest"},
& Nbsp? "Uid = Κρίτωνα, ou = άνθρωποι, dc = 30loops, dc = καθαρή": {
& Nbsp? "Uid": "Κρίτων", "UserPassword": "μυστικό"}
}
# Συγκρίνετε την αναμενόμενη κατάλογο με τον κατάλογο MockLDAP
eq_ (κατάλογο, mock_ldap.directory)
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε