The crowd-ehcache.xml file looks sweet - almost as if it were based on a real-world application ;)
Thanks for this Alan! On Sat, Oct 16, 2010 at 9:52 AM, <[email protected]> wrote: > Author: adc > Date: Sat Oct 16 16:52:47 2010 > New Revision: 1023327 > > URL: http://svn.apache.org/viewvc?rev=1023327&view=rev > Log: > SHIRO-18 integration test > > Added: > shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml (with props) > shiro/sandbox/crowd/src/test/resources/crowd.properties (with props) > Modified: > > shiro/sandbox/crowd/src/test/java/org/apache/shiro/realm/crowd/CrowdRealmTest.java > > Modified: > shiro/sandbox/crowd/src/test/java/org/apache/shiro/realm/crowd/CrowdRealmTest.java > URL: > http://svn.apache.org/viewvc/shiro/sandbox/crowd/src/test/java/org/apache/shiro/realm/crowd/CrowdRealmTest.java?rev=1023327&r1=1023326&r2=1023327&view=diff > ============================================================================== > --- > shiro/sandbox/crowd/src/test/java/org/apache/shiro/realm/crowd/CrowdRealmTest.java > (original) > +++ > shiro/sandbox/crowd/src/test/java/org/apache/shiro/realm/crowd/CrowdRealmTest.java > Sat Oct 16 16:52:47 2010 > @@ -22,6 +22,7 @@ import java.util.Arrays; > import java.util.EnumSet; > > import > com.atlassian.crowd.integration.service.soap.client.SecurityServerClient; > +import > com.atlassian.crowd.integration.service.soap.client.SecurityServerClientFactory; > import org.junit.Test; > import static org.easymock.EasyMock.*; > import static org.junit.Assert.*; > @@ -162,4 +163,38 @@ public class CrowdRealmTest { > assertTrue(authorizationInfo.getRoles().contains("girls")); > assertTrue(authorizationInfo.getRoles().contains("naughty")); > } > + > + public void testIntegration() throws Exception { > + CrowdRealm realm = new CrowdRealm(); > + realm.setName("NutHouse"); > + realm.setRoleSources(EnumSet.of(RoleSource.ROLES_FROM_CROWD_GROUPS, > RoleSource.ROLES_FROM_CROWD_ROLES)); > + > + SecurityServerClient client = > SecurityServerClientFactory.getSecurityServerClient(); > + client.authenticate(); > + > + realm.setCrowdClient(client); > + > + AuthenticationInfo authenticationInfo = > realm.doGetAuthenticationInfo(new UsernamePasswordToken("yoko", "barbie")); > + > + assertNotNull(authenticationInfo); > + assertTrue(Arrays.equals("barbie".toCharArray(), (char[]) > authenticationInfo.getCredentials())); > + > + PrincipalCollection collection = authenticationInfo.getPrincipals(); > + assertNotNull(collection); > + assertTrue(!collection.isEmpty()); > + assertEquals("yoko", collection.getPrimaryPrincipal()); > + assertTrue(!collection.getRealmNames().isEmpty()); > + assertTrue(collection.getRealmNames().contains("NutHouse")); > + assertTrue(!collection.fromRealm("NutHouse").isEmpty()); > + assertTrue(collection.fromRealm("NutHouse").contains("yoko")); > + > + AuthorizationInfo authorizationInfo = > realm.doGetAuthorizationInfo(authenticationInfo.getPrincipals()); > + > + assertTrue(!authorizationInfo.getRoles().isEmpty()); > + assertTrue(authorizationInfo.getRoles().contains("big_sister")); > + assertTrue(authorizationInfo.getRoles().contains("table_setter")); > + assertTrue(authorizationInfo.getRoles().contains("dog_walker")); > + assertTrue(authorizationInfo.getRoles().contains("girls")); > + assertTrue(authorizationInfo.getRoles().contains("naughty")); > + } > } > > Added: shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml > URL: > http://svn.apache.org/viewvc/shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml?rev=1023327&view=auto > ============================================================================== > --- shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml (added) > +++ shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml Sat Oct 16 > 16:52:47 2010 > @@ -0,0 +1,176 @@ > +<ehcache> > + > + <!-- Sets the path to the directory where cache .data files are created. > + > + If the path is a Java System Property it is replaced by > + its value in the running VM. > + > + The following properties are translated: > + user.home - User's home directory > + user.dir - User's current working directory > + java.io.tmpdir - Default temp file path --> > + <diskStore path="java.io.tmpdir"/> > + > + <!--Default Cache configuration. These will applied to caches > programmatically created through > + the CacheManager. > + > + The following attributes are required: > + > + maxElementsInMemory - Sets the maximum number of objects > that will be created in memory > + eternal - Sets whether elements are eternal. > If eternal, timeouts are ignored and the > + element is never expired. > + overflowToDisk - Sets whether elements can overflow > to disk when the in-memory cache > + has reached the maxInMemory limit. > + > + The following attributes are optional: > + timeToIdleSeconds - Sets the time to idle for an > element before it expires. > + i.e. The maximum amount of time > between accesses before an element expires > + Is only used if the element is not > eternal. > + Optional attribute. A value of 0 > means that an Element can idle for infinity. > + The default value is 0. > + timeToLiveSeconds - Sets the time to live for an > element before it expires. > + i.e. The maximum time between > creation time and when an element expires. > + Is only used if the element is not > eternal. > + Optional attribute. A value of 0 > means that and Element can live for infinity. > + The default value is 0. > + diskPersistent - Whether the disk store persists > between restarts of the Virtual Machine. > + The default value is false. > + diskExpiryThreadIntervalSeconds- The number of seconds between runs > of the disk expiry thread. The default value > + is 120 seconds. > + --> > + > + <defaultCache > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches individual user objects > + Sizing: the number of users in your system. --> > + <cache name="com.atlassian.crowd.integration-user" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches individual user objects with attributes > + Sizing: the number of users in your system. --> > + <cache name="com.atlassian.crowd.integration-user-with-attributes" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches the list of all usernames in the system. > + Sizing: One. There's only one list. --> > + <cache name="com.atlassian.crowd.integration-usernames" > + maxElementsInMemory="1" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches individual group objects. > + Sizing: the number of groups in your system. --> > + <cache name="com.atlassian.crowd.integration-group" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches the list of all group names in the system. > + Sizing: One. There's only one list. --> > + <cache name="com.atlassian.crowd.integration-groupnames" > + maxElementsInMemory="1" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches a list of group -> parentGroups. Needed for supporting > certain API calls with nested groups. > + Sizing: The number of groups in your system. --> > + <cache name="com.atlassian.crowd.integration-parentgroup" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches whether a user belongs in a given group. > + Sizing: Number of users times number of groups. This could be quite > large, so you can optimize by setting it > + to the number that are likely to be active at any one time. The > algorithm will fall back to using the > + com.atlassian.crowd.integration-all-group-members cache before > hitting the server to check. --> > + <cache name="com.atlassian.crowd.integration-group-membership" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches the list of all groups a user is in. > + Sizing: the number of users in your system. --> > + <cache name="com.atlassian.crowd.integration-all-memberships" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches the list of users in a group plus its subgroups. > + Sizing: the number of groups in your system. --> > + <cache name="com.atlassian.crowd.integration-all-group-members" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches the list of usernames in lower-case to correct-case > usernames. > + Sizing: the number of users in your system. --> > + <cache name="com.atlassian.crowd.integration-username-case" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + <!-- Caches the list of groupnames in lower-case to correct-case > groupnames. > + Sizing: the number of groups in your system. --> > + <cache name="com.atlassian.crowd.integration-groupname-case" > + maxElementsInMemory="50000" > + eternal="false" > + overflowToDisk="false" > + timeToIdleSeconds="3600" > + timeToLiveSeconds="3600" > + diskPersistent="false" > + diskExpiryThreadIntervalSeconds="120"/> > + > + > + <!-- See http://ehcache.sourceforge.net/documentation/#mozTocId258426 > for how to configure caching for your objects --> > +</ehcache> > \ No newline at end of file > > Propchange: shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml > ------------------------------------------------------------------------------ > svn:keywords = Date Revision > > Propchange: shiro/sandbox/crowd/src/test/resources/crowd-ehcache.xml > ------------------------------------------------------------------------------ > svn:mime-type = text/xml > > Added: shiro/sandbox/crowd/src/test/resources/crowd.properties > URL: > http://svn.apache.org/viewvc/shiro/sandbox/crowd/src/test/resources/crowd.properties?rev=1023327&view=auto > ============================================================================== > --- shiro/sandbox/crowd/src/test/resources/crowd.properties (added) > +++ shiro/sandbox/crowd/src/test/resources/crowd.properties Sat Oct 16 > 16:52:47 2010 > @@ -0,0 +1,8 @@ > +session.lastvalidation=session.lastvalidation > +application.password=secret > +session.isauthenticated=session.isauthenticated > +application.name=shiro > +crowd.server.url=http\://localhost\:8095/crowd/services/ > +session.validationinterval=0 > +session.tokenkey=session.tokenkey > +application.login.url=http\://localhost\:8095/crowd > > Propchange: shiro/sandbox/crowd/src/test/resources/crowd.properties > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: shiro/sandbox/crowd/src/test/resources/crowd.properties > ------------------------------------------------------------------------------ > svn:keywords = Date Revision > > Propchange: shiro/sandbox/crowd/src/test/resources/crowd.properties > ------------------------------------------------------------------------------ > svn:mime-type = text/plain > > >
