diff --git a/ldap/src/integration-test/java/org/springframework/security/ldap/ApacheDSServerIntegrationTests.java b/ldap/src/integration-test/java/org/springframework/security/ldap/ApacheDSServerIntegrationTests.java index 55c8b642cf..a0b661896e 100644 --- a/ldap/src/integration-test/java/org/springframework/security/ldap/ApacheDSServerIntegrationTests.java +++ b/ldap/src/integration-test/java/org/springframework/security/ldap/ApacheDSServerIntegrationTests.java @@ -33,7 +33,7 @@ public final class ApacheDSServerIntegrationTests { // contextSource = new DefaultSpringSecurityContextSource("ldap://127.0.0.1:22389/dc=springsource,dc=com"); // contextSource.setUserDn("cn=admin,dc=springsource,dc=com"); // contextSource.setPassword("password"); - server = new ApacheDSContainer("dc=springframework,dc=org", "classpath:test-server.ldif"); + server = new ApacheDSContainer("dc=springframework,dc=org", "classpath*:*.ldif"); server.setPort(53389); server.afterPropertiesSet(); } diff --git a/ldap/src/integration-test/resources/base-server.ldif b/ldap/src/integration-test/resources/base-server.ldif new file mode 100644 index 0000000000..3b25fa1b52 --- /dev/null +++ b/ldap/src/integration-test/resources/base-server.ldif @@ -0,0 +1,39 @@ +dn: ou=people,dc=springframework,dc=org +objectclass: top +objectclass: organizationalUnit +ou: people + +dn: ou=otherpeople,dc=springframework,dc=org +objectclass: top +objectclass: organizationalUnit +ou: otherpeople + +dn: uid=ben,ou=people,dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: Ben Alex +sn: Alex +uid: ben +userPassword: {SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ= + +dn: uid=bob,ou=people,dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: Bob Hamilton +sn: Hamilton +uid: bob +userPassword: bobspassword + +dn: uid=joe,ou=otherpeople,dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: Joe Smeth +sn: Smeth +uid: joe +userPassword: joespassword diff --git a/ldap/src/integration-test/resources/odd-chars.ldif b/ldap/src/integration-test/resources/odd-chars.ldif new file mode 100644 index 0000000000..2a5f756171 --- /dev/null +++ b/ldap/src/integration-test/resources/odd-chars.ldif @@ -0,0 +1,49 @@ +dn: ou=space cadets,dc=springframework,dc=org +objectclass: top +objectclass: organizationalUnit +ou: space cadets + +dn: ou=\"quoted people\",dc=springframework,dc=org +objectclass: top +objectclass: organizationalUnit +ou: "quoted people" + +dn: cn=mouse\, jerry,ou=people,dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: Mouse, Jerry +sn: Mouse +uid: jerry +userPassword: jerryspassword + +dn: cn=slash/guy,ou=people,dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: slash/guy +sn: Slash +uid: slashguy +userPassword: slashguyspassword + +dn: cn=quote\"guy,ou=\"quoted people\",dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: quote\"guy +sn: Quote +uid: quoteguy +userPassword: quoteguyspassword + +dn: uid=space cadet,ou=space cadets,dc=springframework,dc=org +objectclass: top +objectclass: person +objectclass: organizationalPerson +objectclass: inetOrgPerson +cn: Space Cadet +sn: Cadet +uid: space cadet +userPassword: spacecadetspassword diff --git a/ldap/src/integration-test/resources/test-server.ldif b/ldap/src/integration-test/resources/test-server.ldif deleted file mode 100644 index f27d3f1685..0000000000 --- a/ldap/src/integration-test/resources/test-server.ldif +++ /dev/null @@ -1,124 +0,0 @@ -dn: ou=groups,dc=springframework,dc=org -objectclass: top -objectclass: organizationalUnit -ou: groups - -dn: ou=subgroups,ou=groups,dc=springframework,dc=org -objectclass: top -objectclass: organizationalUnit -ou: subgroups - -dn: ou=people,dc=springframework,dc=org -objectclass: top -objectclass: organizationalUnit -ou: people - -dn: ou=space cadets,dc=springframework,dc=org -objectclass: top -objectclass: organizationalUnit -ou: space cadets - -dn: ou=\"quoted people\",dc=springframework,dc=org -objectclass: top -objectclass: organizationalUnit -ou: "quoted people" - -dn: ou=otherpeople,dc=springframework,dc=org -objectclass: top -objectclass: organizationalUnit -ou: otherpeople - -dn: uid=ben,ou=people,dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: Ben Alex -sn: Alex -uid: ben -userPassword: {SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ= - -dn: uid=bob,ou=people,dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: Bob Hamilton -sn: Hamilton -uid: bob -userPassword: bobspassword - -dn: uid=joe,ou=otherpeople,dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: Joe Smeth -sn: Smeth -uid: joe -userPassword: joespassword - -dn: cn=mouse\, jerry,ou=people,dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: Mouse, Jerry -sn: Mouse -uid: jerry -userPassword: jerryspassword - -dn: cn=slash/guy,ou=people,dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: slash/guy -sn: Slash -uid: slashguy -userPassword: slashguyspassword - -dn: cn=quote\"guy,ou=\"quoted people\",dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: quote\"guy -sn: Quote -uid: quoteguy -userPassword: quoteguyspassword - -dn: uid=space cadet,ou=space cadets,dc=springframework,dc=org -objectclass: top -objectclass: person -objectclass: organizationalPerson -objectclass: inetOrgPerson -cn: Space Cadet -sn: Cadet -uid: space cadet -userPassword: spacecadetspassword - - - -dn: cn=developers,ou=groups,dc=springframework,dc=org -objectclass: top -objectclass: groupOfNames -cn: developers -ou: developer -member: uid=ben,ou=people,dc=springframework,dc=org -member: uid=bob,ou=people,dc=springframework,dc=org - -dn: cn=managers,ou=groups,dc=springframework,dc=org -objectclass: top -objectclass: groupOfNames -cn: managers -ou: manager -member: uid=ben,ou=people,dc=springframework,dc=org -member: cn=mouse\, jerry,ou=people,dc=springframework,dc=org - -dn: cn=submanagers,ou=subgroups,ou=groups,dc=springframework,dc=org -objectclass: top -objectclass: groupOfNames -cn: submanagers -ou: submanager -member: uid=ben,ou=people,dc=springframework,dc=org diff --git a/ldap/src/integration-test/resources/user-groups.ldif b/ldap/src/integration-test/resources/user-groups.ldif new file mode 100644 index 0000000000..ab5f16e15a --- /dev/null +++ b/ldap/src/integration-test/resources/user-groups.ldif @@ -0,0 +1,32 @@ +dn: ou=groups,dc=springframework,dc=org +objectclass: top +objectclass: organizationalUnit +ou: groups + +dn: cn=developers,ou=groups,dc=springframework,dc=org +objectclass: top +objectclass: groupOfNames +cn: developers +ou: developer +member: uid=ben,ou=people,dc=springframework,dc=org +member: uid=bob,ou=people,dc=springframework,dc=org + +dn: cn=managers,ou=groups,dc=springframework,dc=org +objectclass: top +objectclass: groupOfNames +cn: managers +ou: manager +member: uid=ben,ou=people,dc=springframework,dc=org +member: cn=mouse\, jerry,ou=people,dc=springframework,dc=org + +dn: ou=subgroups,ou=groups,dc=springframework,dc=org +objectclass: top +objectclass: organizationalUnit +ou: subgroups + +dn: cn=submanagers,ou=subgroups,ou=groups,dc=springframework,dc=org +objectclass: top +objectclass: groupOfNames +cn: submanagers +ou: submanager +member: uid=ben,ou=people,dc=springframework,dc=org diff --git a/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java b/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java index c9a1209581..2aecb0a673 100644 --- a/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java +++ b/ldap/src/main/java/org/springframework/security/ldap/server/ApacheDSContainer.java @@ -35,7 +35,7 @@ import org.springframework.util.Assert; /** * Provides lifecycle services for the embedded apacheDS server defined by the supplied configuration. - * Used by {code LdapServerBeanDefinitionParser}. An instance will be stored in the application context for + * Used by {@code LdapServerBeanDefinitionParser}. An instance will be stored in the application context for * each embedded server instance. It will start the server when the context is initialized and shut it down when * it is closed. It is intended for temporary embedded use and will not retain changes across start/stop boundaries. The * working directory is deleted on shutdown. @@ -227,18 +227,13 @@ public class ApacheDSContainer implements InitializingBean, DisposableBean, Life ldifs = ctxt.getResources(ldifResources); } - // Note that we can't just import using the ServerContext returned - // from starting Apache DS, apparently because of the long-running issue DIRSERVER-169. - // We need a standard context. - //DirContext dirContext = contextSource.getReadWriteContext(); - - if(ldifs != null && ldifs.length > 0) { + for(Resource r : ldifs) { String ldifFile; try { - ldifFile = ldifs[0].getFile().getAbsolutePath(); + ldifFile = r.getFile().getAbsolutePath(); } catch (IOException e) { - ldifFile = ldifs[0].getURI().toString(); + ldifFile = r.getURI().toString(); } logger.info("Loading LDIF file: " + ldifFile); LdifFileLoader loader = new LdifFileLoader(service.getAdminSession(), ldifFile);