You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shiro.apache.org by Les Hazlewood <lh...@apache.org> on 2010/10/16 20:15:18 UTC

Re: svn commit: r1023327 - in /shiro/sandbox/crowd/src/test: java/org/apache/shiro/realm/crowd/CrowdRealmTest.java resources/crowd-ehcache.xml resources/crowd.properties

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,  <ad...@apache.org> 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
>
>
>