mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-09 11:53:30 +00:00
SEC-313: Add integration test for Contacts.
This commit is contained in:
parent
84671f9d68
commit
508966f0c7
26
.classpath
26
.classpath
@ -1,22 +1,27 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" path="samples/attributes/src/main/java"/>
|
<classpathentry kind="src" path="core/src/main/java"/>
|
||||||
|
<classpathentry kind="src" path="core/src/main/resources"/>
|
||||||
|
<classpathentry kind="src" path="core/src/test/java"/>
|
||||||
|
<classpathentry kind="src" path="core/src/test/resources"/>
|
||||||
<classpathentry kind="src" path="sandbox/other/src/main/java"/>
|
<classpathentry kind="src" path="sandbox/other/src/main/java"/>
|
||||||
<classpathentry kind="src" path="samples/acegifier/src/test/resources"/>
|
<classpathentry kind="src" path="samples/contacts/src/main/java"/>
|
||||||
<classpathentry kind="src" path="samples/acegifier/src/main/resources"/>
|
<classpathentry kind="src" path="samples/contacts/src/main/resources"/>
|
||||||
|
<classpathentry kind="src" path="samples/contacts/src/test/java"/>
|
||||||
|
<classpathentry kind="src" path="samples/contacts/src/test/resources"/>
|
||||||
<classpathentry kind="src" path="samples/acegifier/src/main/java"/>
|
<classpathentry kind="src" path="samples/acegifier/src/main/java"/>
|
||||||
|
<classpathentry kind="src" path="samples/acegifier/src/main/resources"/>
|
||||||
<classpathentry kind="src" path="samples/acegifier/src/test/java"/>
|
<classpathentry kind="src" path="samples/acegifier/src/test/java"/>
|
||||||
<classpathentry kind="src" path="adapters/catalina/src/main/resources"/>
|
<classpathentry kind="src" path="samples/acegifier/src/test/resources"/>
|
||||||
|
<classpathentry kind="src" path="samples/attributes/src/main/java"/>
|
||||||
<classpathentry kind="src" path="samples/attributes/src/main/resources"/>
|
<classpathentry kind="src" path="samples/attributes/src/main/resources"/>
|
||||||
<classpathentry kind="src" path="samples/attributes/src/test/java"/>
|
<classpathentry kind="src" path="samples/attributes/src/test/java"/>
|
||||||
<classpathentry kind="src" path="adapters/cas/src/test/resources"/>
|
<classpathentry kind="src" path="adapters/cas/src/test/resources"/>
|
||||||
<classpathentry kind="src" path="adapters/cas/src/main/resources"/>
|
<classpathentry kind="src" path="adapters/cas/src/main/resources"/>
|
||||||
<classpathentry kind="src" path="core/src/main/resources"/>
|
|
||||||
<classpathentry kind="src" path="core/src/test/resources"/>
|
|
||||||
<classpathentry kind="src" path="samples/contacts/src/main/java"/>
|
|
||||||
<classpathentry kind="src" path="adapters/cas/src/main/java"/>
|
<classpathentry kind="src" path="adapters/cas/src/main/java"/>
|
||||||
<classpathentry kind="src" path="adapters/cas/src/test/java"/>
|
<classpathentry kind="src" path="adapters/cas/src/test/java"/>
|
||||||
<classpathentry kind="src" path="adapters/catalina/src/main/java"/>
|
<classpathentry kind="src" path="adapters/catalina/src/main/java"/>
|
||||||
|
<classpathentry kind="src" path="adapters/catalina/src/main/resources"/>
|
||||||
<classpathentry kind="src" path="adapters/catalina/src/test/java"/>
|
<classpathentry kind="src" path="adapters/catalina/src/test/java"/>
|
||||||
<classpathentry kind="src" path="adapters/jboss/src/main/java"/>
|
<classpathentry kind="src" path="adapters/jboss/src/main/java"/>
|
||||||
<classpathentry kind="src" path="adapters/jboss/src/test/java"/>
|
<classpathentry kind="src" path="adapters/jboss/src/test/java"/>
|
||||||
@ -24,8 +29,7 @@
|
|||||||
<classpathentry kind="src" path="adapters/jetty/src/test/java"/>
|
<classpathentry kind="src" path="adapters/jetty/src/test/java"/>
|
||||||
<classpathentry kind="src" path="adapters/resin/src/main/java"/>
|
<classpathentry kind="src" path="adapters/resin/src/main/java"/>
|
||||||
<classpathentry kind="src" path="adapters/resin/src/test/java"/>
|
<classpathentry kind="src" path="adapters/resin/src/test/java"/>
|
||||||
<classpathentry kind="src" path="core/src/main/java"/>
|
<classpathentry kind="src" path="java"/>
|
||||||
<classpathentry kind="src" path="core/src/test/java"/>
|
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||||
<classpathentry kind="var" path="MAVEN_REPO/com.caucho/jars/resin-3.0.9.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/com.caucho/jars/resin-3.0.9.jar"/>
|
||||||
<classpathentry kind="var" path="MAVEN_REPO/org.springframework/jars/spring-2.0-m2.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/org.springframework/jars/spring-2.0-m2.jar"/>
|
||||||
@ -49,14 +53,14 @@
|
|||||||
<classpathentry kind="var" path="MAVEN_REPO/javax.servlet/jars/jsp-api-2.0.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/javax.servlet/jars/jsp-api-2.0.jar"/>
|
||||||
<classpathentry kind="var" path="MAVEN_REPO/hibernate/jars/hibernate-3.0.3.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/hibernate/jars/hibernate-3.0.3.jar"/>
|
||||||
<classpathentry sourcepath="DIST_BASE/commons-beanutils-1.6.1-src/src/java" kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.6.1.jar"/>
|
<classpathentry sourcepath="DIST_BASE/commons-beanutils-1.6.1-src/src/java" kind="var" path="MAVEN_REPO/commons-beanutils/jars/commons-beanutils-1.6.1.jar"/>
|
||||||
|
<classpathentry kind="src" path="samples/contacts-tiger/src/main/java"/>
|
||||||
<classpathentry kind="src" path="core-tiger/src/main/java"/>
|
<classpathentry kind="src" path="core-tiger/src/main/java"/>
|
||||||
<classpathentry kind="src" path="core-tiger/src/test/java"/>
|
|
||||||
<classpathentry kind="src" path="core-tiger/src/main/resources"/>
|
<classpathentry kind="src" path="core-tiger/src/main/resources"/>
|
||||||
|
<classpathentry kind="src" path="core-tiger/src/test/java"/>
|
||||||
<classpathentry kind="src" path="core-tiger/src/test/resources"/>
|
<classpathentry kind="src" path="core-tiger/src/test/resources"/>
|
||||||
<classpathentry kind="src" path="samples/annotations/src/main/java"/>
|
<classpathentry kind="src" path="samples/annotations/src/main/java"/>
|
||||||
<classpathentry kind="src" path="samples/annotations/src/main/resources"/>
|
<classpathentry kind="src" path="samples/annotations/src/main/resources"/>
|
||||||
<classpathentry kind="src" path="samples/annotations/src/test/java"/>
|
<classpathentry kind="src" path="samples/annotations/src/test/java"/>
|
||||||
<classpathentry kind="src" path="samples/contacts-tiger/src/main/java"/>
|
|
||||||
<classpathentry kind="var" path="MAVEN_REPO/org.samba.jcifs/jars/jcifs-1.2.6.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/org.samba.jcifs/jars/jcifs-1.2.6.jar"/>
|
||||||
<classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.6.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/dom4j/jars/dom4j-1.6.jar"/>
|
||||||
<classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xercesImpl-2.6.2.jar"/>
|
<classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xercesImpl-2.6.2.jar"/>
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
<param-name>contextConfigLocation</param-name>
|
<param-name>contextConfigLocation</param-name>
|
||||||
<param-value>
|
<param-value>
|
||||||
/WEB-INF/applicationContext-acegi-security.xml
|
/WEB-INF/applicationContext-acegi-security.xml
|
||||||
/WEB-INF/applicationContext-common-business.xml
|
classpath:applicationContext-common-business.xml
|
||||||
/WEB-INF/applicationContext-common-authorization.xml
|
classpath:applicationContext-common-authorization.xml
|
||||||
</param-value>
|
</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
<param-name>contextConfigLocation</param-name>
|
<param-name>contextConfigLocation</param-name>
|
||||||
<param-value>
|
<param-value>
|
||||||
/WEB-INF/applicationContext-acegi-security.xml
|
/WEB-INF/applicationContext-acegi-security.xml
|
||||||
/WEB-INF/applicationContext-common-business.xml
|
classpath:applicationContext-common-business.xml
|
||||||
/WEB-INF/applicationContext-common-authorization.xml
|
classpath:applicationContext-common-authorization.xml
|
||||||
</param-value>
|
</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
<param-name>contextConfigLocation</param-name>
|
<param-name>contextConfigLocation</param-name>
|
||||||
<param-value>
|
<param-value>
|
||||||
/WEB-INF/applicationContext-acegi-security.xml
|
/WEB-INF/applicationContext-acegi-security.xml
|
||||||
/WEB-INF/applicationContext-common-business.xml
|
classpath:applicationContext-common-business.xml
|
||||||
/WEB-INF/applicationContext-common-authorization.xml
|
classpath:applicationContext-common-authorization.xml
|
||||||
</param-value>
|
</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
<param-name>contextConfigLocation</param-name>
|
<param-name>contextConfigLocation</param-name>
|
||||||
<param-value>
|
<param-value>
|
||||||
/WEB-INF/applicationContext-acegi-security.xml
|
/WEB-INF/applicationContext-acegi-security.xml
|
||||||
/WEB-INF/applicationContext-common-business.xml
|
classpath:applicationContext-common-business.xml
|
||||||
/WEB-INF/applicationContext-common-authorization.xml
|
classpath:applicationContext-common-authorization.xml
|
||||||
</param-value>
|
</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
<param-name>contextConfigLocation</param-name>
|
<param-name>contextConfigLocation</param-name>
|
||||||
<param-value>
|
<param-value>
|
||||||
/WEB-INF/applicationContext-acegi-security.xml
|
/WEB-INF/applicationContext-acegi-security.xml
|
||||||
/WEB-INF/applicationContext-common-business.xml
|
classpath:applicationContext-common-business.xml
|
||||||
/WEB-INF/applicationContext-common-authorization.xml
|
classpath:applicationContext-common-authorization.xml
|
||||||
</param-value>
|
</param-value>
|
||||||
</context-param>
|
</context-param>
|
||||||
<!--
|
<!--
|
||||||
|
@ -0,0 +1,118 @@
|
|||||||
|
package sample.contact;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.acegisecurity.Authentication;
|
||||||
|
import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
|
||||||
|
import org.acegisecurity.context.SecurityContextImpl;
|
||||||
|
import org.acegisecurity.context.SecurityContextHolder;
|
||||||
|
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||||
|
import org.springframework.test.AbstractTransactionalSpringContextTests;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides simplified access to the <code>ContactManager</code> bean and
|
||||||
|
* convenience test support methods.
|
||||||
|
*
|
||||||
|
* @author David Leal
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @author balex
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public abstract class AbstractContactsSampleTest extends AbstractTransactionalSpringContextTests {
|
||||||
|
|
||||||
|
protected ContactManager contactManager;
|
||||||
|
|
||||||
|
protected String[] getConfigLocations() {
|
||||||
|
setAutowireMode(AutowireCapableBeanFactory.AUTOWIRE_BY_NAME);
|
||||||
|
return new String[] { "applicationContext-common-authorization.xml",
|
||||||
|
"applicationContext-common-business.xml",
|
||||||
|
"applicationContext-contacts-test.xml" };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locates the first <code>Contact</code> of the exact name specified.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* Uses the {@link ContactManager#getAll()} method.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* Identify of the contact to locate (must be an exact match)
|
||||||
|
*
|
||||||
|
* @return the domain or <code>null</code> if not found
|
||||||
|
*/
|
||||||
|
protected Contact getContact(String id) {
|
||||||
|
List contacts = contactManager.getAll();
|
||||||
|
Iterator iter = contacts.iterator();
|
||||||
|
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Contact contact = (Contact) iter.next();
|
||||||
|
|
||||||
|
if (contact.getId().equals(id)) {
|
||||||
|
return contact;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void assertContainsContact(String id, List contacts) {
|
||||||
|
Iterator iter = contacts.iterator();
|
||||||
|
System.out.println(contacts);
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Contact contact = (Contact) iter.next();
|
||||||
|
|
||||||
|
if (contact.getId().toString().equals(id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fail("List of contacts should have contained: " + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void assertNotContainsContact(String id, List contacts) {
|
||||||
|
Iterator iter = contacts.iterator();
|
||||||
|
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
Contact domain = (Contact) iter.next();
|
||||||
|
|
||||||
|
if (domain.getId().toString().equals(id)) {
|
||||||
|
fail("List of contact should NOT (but did) contain: " + id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void makeActiveUser(String username) {
|
||||||
|
String password = "";
|
||||||
|
|
||||||
|
if ("marissa".equals(username)) {
|
||||||
|
password = "koala";
|
||||||
|
} else if ("dianne".equals(username)) {
|
||||||
|
password = "emu";
|
||||||
|
} else if ("scott".equals(username)) {
|
||||||
|
password = "wombat";
|
||||||
|
} else if ("peter".equals(username)) {
|
||||||
|
password = "opal";
|
||||||
|
}
|
||||||
|
|
||||||
|
Authentication authRequest = new UsernamePasswordAuthenticationToken(
|
||||||
|
username, password);
|
||||||
|
SecurityContextImpl secureContext = new SecurityContextImpl();
|
||||||
|
secureContext.setAuthentication(authRequest);
|
||||||
|
SecurityContextHolder.setContext(secureContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void onTearDownInTransaction() {
|
||||||
|
destroySecureContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void destroySecureContext() {
|
||||||
|
SecurityContextHolder.setContext(new SecurityContextImpl());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContactManager(ContactManager contactManager) {
|
||||||
|
this.contactManager = contactManager;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sample.contact;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests {@link
|
||||||
|
* com.acegitech.dns.domain.DomainManager#findAllDomainsLike(String)}.
|
||||||
|
*
|
||||||
|
* @author David Leal
|
||||||
|
*/
|
||||||
|
public class GetAllContactsTests extends AbstractContactsSampleTest {
|
||||||
|
//~ Methods ================================================================
|
||||||
|
|
||||||
|
public void testFindAllDomainsLikeAsDianne() {
|
||||||
|
makeActiveUser("dianne"); // has ROLE_USER
|
||||||
|
|
||||||
|
List contacts = contactManager.getAll();
|
||||||
|
assertEquals(4, contacts.size());
|
||||||
|
|
||||||
|
assertContainsContact(Long.toString(4), contacts);
|
||||||
|
assertContainsContact(Long.toString(5), contacts);
|
||||||
|
assertContainsContact(Long.toString(6), contacts);
|
||||||
|
assertContainsContact(Long.toString(8), contacts);
|
||||||
|
|
||||||
|
assertNotContainsContact(Long.toString(1), contacts);
|
||||||
|
assertNotContainsContact(Long.toString(2), contacts);
|
||||||
|
assertNotContainsContact(Long.toString(3), contacts);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFindAllDomainsLikeAsMarissa() {
|
||||||
|
makeActiveUser("marissa"); // has ROLE_SUPERVISOR
|
||||||
|
|
||||||
|
List contacts = contactManager.getAll();
|
||||||
|
|
||||||
|
assertEquals(4, contacts.size());
|
||||||
|
|
||||||
|
assertContainsContact(Long.toString(1), contacts);
|
||||||
|
assertContainsContact(Long.toString(2), contacts);
|
||||||
|
assertContainsContact(Long.toString(3), contacts);
|
||||||
|
assertContainsContact(Long.toString(4), contacts);
|
||||||
|
|
||||||
|
assertNotContainsContact(Long.toString(5), contacts);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFindAllDomainsLikeAsScott() {
|
||||||
|
makeActiveUser("scott"); // has ROLE_USER
|
||||||
|
|
||||||
|
List contacts = contactManager.getAll();
|
||||||
|
|
||||||
|
assertEquals(5, contacts.size());
|
||||||
|
|
||||||
|
assertContainsContact(Long.toString(4), contacts);
|
||||||
|
assertContainsContact(Long.toString(6), contacts);
|
||||||
|
assertContainsContact(Long.toString(7), contacts);
|
||||||
|
assertContainsContact(Long.toString(8), contacts);
|
||||||
|
assertContainsContact(Long.toString(9), contacts);
|
||||||
|
|
||||||
|
assertNotContainsContact(Long.toString(1), contacts);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Application context containing authentication beans.
|
||||||
|
-
|
||||||
|
- Only used by unit tests.
|
||||||
|
-
|
||||||
|
- $Id$
|
||||||
|
-->
|
||||||
|
|
||||||
|
<beans>
|
||||||
|
|
||||||
|
<!-- ======================== AUTHENTICATION ======================= -->
|
||||||
|
|
||||||
|
<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
|
||||||
|
<property name="providers">
|
||||||
|
<list>
|
||||||
|
<ref local="daoAuthenticationProvider"/>
|
||||||
|
</list>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
|
||||||
|
<property name="userDetailsService"><ref local="jdbcDaoImpl"/></property>
|
||||||
|
<property name="passwordEncoder"><ref local="passwordEncoder"/></property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">
|
||||||
|
<property name="dataSource"><ref bean="dataSource"/></property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/>
|
||||||
|
|
||||||
|
<!-- Automatically receives AuthenticationEvent messages -->
|
||||||
|
<bean id="loggerListener" class="org.acegisecurity.event.authentication.LoggerListener"/>
|
||||||
|
|
||||||
|
</beans>
|
Loading…
x
Reference in New Issue
Block a user