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 a0b661896e..55c8b642cf 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*:*.ldif"); + server = new ApacheDSContainer("dc=springframework,dc=org", "classpath:test-server.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 deleted file mode 100644 index 3b25fa1b52..0000000000 --- a/ldap/src/integration-test/resources/base-server.ldif +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index 2a5f756171..0000000000 --- a/ldap/src/integration-test/resources/odd-chars.ldif +++ /dev/null @@ -1,49 +0,0 @@ -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 new file mode 100644 index 0000000000..f27d3f1685 --- /dev/null +++ b/ldap/src/integration-test/resources/test-server.ldif @@ -0,0 +1,124 @@ +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 deleted file mode 100644 index ab5f16e15a..0000000000 --- a/ldap/src/integration-test/resources/user-groups.ldif +++ /dev/null @@ -1,32 +0,0 @@ -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 2aecb0a673..c9a1209581 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,13 +227,18 @@ public class ApacheDSContainer implements InitializingBean, DisposableBean, Life ldifs = ctxt.getResources(ldifResources); } - for(Resource r : ldifs) { + // 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) { String ldifFile; try { - ldifFile = r.getFile().getAbsolutePath(); + ldifFile = ldifs[0].getFile().getAbsolutePath(); } catch (IOException e) { - ldifFile = r.getURI().toString(); + ldifFile = ldifs[0].getURI().toString(); } logger.info("Loading LDIF file: " + ldifFile); LdifFileLoader loader = new LdifFileLoader(service.getAdminSession(), ldifFile);