in reply to Mocking LDAP in your tests

Interesting. Maybe my approach to that is too lousy:

Since Net::LDAP supports searching a LDIF file, I do mocking by producing a reasonable, condensed LDIF file and using that instead of an LDAP server for searches. I wrap the search() method into one which rewinds the LDIF filehandle for subsequent searches.

Now, because bind() is a combined procedure of hashing a password and a search, it is trivial to set up a mock_bind() function which does just that, and produces the appropriate result.

Yes, searching is slow, if the LDIF file is big. What do you think? What am I missing?

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'

Replies are listed 'Best First'.
Re^2: Mocking LDAP in your tests
by Ea (Chaplain) on Jun 01, 2018 at 10:03 UTC
    My understanding is that your application should not contain code exists only there to make the tests pass. If you do all the work in your test, then it doesn't matter if you're working offline, your tests should run without complaining that they can't connect to the server. Keeping an LDIF file in your tests makes a lot of sense in the separation of code. To counter problems with slow tests, I suppose you want the setup/teardown to be efficient, the LDIF only as big as necessary and to consider Continuous Integration to run the full test suite automatically.

    Is your LDAP sitting in your application or is it external? Would you be able to post some test code snippits? I'd like to see how you do it.

    Ea

    Sometimes I can think of 6 impossible LDAP attributes before breakfast.

    YAPC::Europe::2018 — Hmmm, need to talk to work about sending me there or to Mojoconf.

Re^2: Mocking LDAP in your tests
by trantorvega (Initiate) on Sep 01, 2018 at 15:30 UTC
    Sorry to barge in, but how exactly do you use Net::LDAP to search through LDIF files? Did you create a custom search for that?