Monday, July 14, 2008

Unit testing Spring-LDAP code with ApacheDS

The Spring LDAP framework is a great library to assist in working with LDAP servers through a more manageable API. It provides the niceties that the DataSource interface does for JDBC along with support similar to the Spring JDBC framework. One area that has been lacking though is testing. With JDBC based code it is easy enough to use HSQLDB to provide an in-memory database to test against. With LDAP based code there hasn't been a good solution, until the Apache Directory project came along.

Apache Directory is a 100% Java LDAP implementation and includes support for in-memory LDAP instances for unit testing. Using this support plus a few helper classes to bridge the gap to Spring LDAP providing unit tests for LDAP related code is easy.

First add the necessary dependencies. If you are using Maven your project needs to depend on the following for testing:


Second, add AbstractDirContextTest.java and SingleContextSource.java to your project.

Finally extend AbstractDirContextTest for your LDAP code test class.


Your test class needs to provide a partition name, which is the root of the DN for the server to test against, and a Resource array of ldiff files to load into the LDAP server. For the test above the ldiff file looke like:

No comments: