You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ca...@apache.org on 2006/07/31 12:45:48 UTC

svn commit: r427069 - in /maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi: ./ src/main/java/org/apache/maven/continuum/security/acegi/aspectj/ src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ src/tes...

Author: carlos
Date: Mon Jul 31 03:45:47 2006
New Revision: 427069

URL: http://svn.apache.org/viewvc?rev=427069&view=rev
Log:
First working prototype for method level authorization

Added:
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/aspectj/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityAspect.aj
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java   (with props)
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java   (with props)
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java   (with props)
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java   (with props)
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml   (with props)
Modified:
    maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml

Modified: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml?rev=427069&r1=427068&r2=427069&view=diff
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/pom.xml Mon Jul 31 03:45:47 2006
@@ -11,23 +11,52 @@
   <artifactId>continuum-security-acegi</artifactId>
   <name>Continuum Security - Acegi implementation</name>
   <version>1.1-SNAPSHOT</version>
+
   <dependencies>
     <dependency>
-      <groupId>org.acegisecurity</groupId>
-      <artifactId>acegi-security</artifactId>
-      <version>1.1-SNAPSHOT</version>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-acegi-integration</artifactId>
+      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.continuum</groupId>
-      <artifactId>continuum-api</artifactId>
+      <artifactId>continuum-store</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.continuum</groupId>
-      <artifactId>continuum-model</artifactId>
+      <artifactId>continuum-core</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.continuum</groupId>
-      <artifactId>continuum-store</artifactId>
+      <groupId>org.acegisecurity</groupId>
+      <artifactId>acegi-security</artifactId>
+      <version>1.1-SNAPSHOT</version>
+      <type>test-jar</type>
     </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>aspectj-maven-plugin</artifactId>
+        <configuration>
+          <weaveDependencies>
+            <weaveDependency>
+              <groupId>org.apache.maven.continuum</groupId>
+              <artifactId>continuum-core</artifactId>
+            </weaveDependency>
+          </weaveDependencies>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>compile</goal>
+              <goal>test-compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>

Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityAspect.aj
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityAspect.aj?rev=427069&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityAspect.aj (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityAspect.aj Mon Jul 31 03:45:47 2006
@@ -0,0 +1,36 @@
+package org.apache.maven.continuum.security.acegi.aspectj;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+import org.apache.maven.continuum.Continuum;
+import org.codehaus.plexus.acegi.intercept.method.aspectj.SecurityAspect;
+
+/**
+ * <p>Acegi interceptor for {@link Continuum} method calls.</p>
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id: ContinuumUserDetailsService.java 421005 2006-07-11 22:00:29Z carlos $
+ */
+public aspect MethodSecurityAspect extends SecurityAspect
+{
+
+    protected pointcut securedExecution():
+        target(Continuum) &&
+        execution(public * *(..)) &&
+        !within(MethodSecurityAspect);
+
+}

Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java?rev=427069&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java Mon Jul 31 03:45:47 2006
@@ -0,0 +1,134 @@
+package org.apache.maven.continuum.security.acegi.aspectj;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+import junit.framework.TestCase;
+
+import org.acegisecurity.AccessDecisionManager;
+import org.acegisecurity.AccessDeniedException;
+import org.acegisecurity.Authentication;
+import org.acegisecurity.AuthenticationException;
+import org.acegisecurity.GrantedAuthority;
+import org.acegisecurity.GrantedAuthorityImpl;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.acegisecurity.providers.TestingAuthenticationToken;
+import org.apache.maven.continuum.Continuum;
+import org.apache.maven.continuum.model.project.Project;
+
+/**
+ * Test for {@link MethodSecurityAspect}
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public abstract class AbstractMethodSecurityTest
+    extends TestCase
+{
+    private Continuum continuum;
+
+    public void setContinuum( Continuum continuum )
+    {
+        this.continuum = continuum;
+    }
+
+    public Continuum getContinuum()
+    {
+        return continuum;
+    }
+
+    public MethodSecurityAspect getAspect()
+    {
+        return MethodSecurityAspect.aspectOf();
+    }
+
+    /**
+     * Get an {@link Authentication} with provided role object that can
+     * be used with the chosen {@link AccessDecisionManager} 
+     * 
+     * @param role eg. <code>ADMIN</code>, <code>USER</code>, ...
+     * @return
+     */
+    protected Authentication getAuthentication( String role )
+    {
+        return new TestingAuthenticationToken( "marissa", "koala",
+                                               new GrantedAuthority[] { new GrantedAuthorityImpl( "MOCK_" + role ) } );
+    }
+
+    /**
+     * Check that method call proceeds when user has the required role.
+     * 
+     * @throws Exception
+     */
+    public void testMethodSecurity()
+        throws Exception
+    {
+        assertNotNull( "continuum property is not set", getContinuum() );
+        assertNotNull( "securityInterceptor property in aspect is not set", getAspect().getSecurityInterceptor() );
+
+        SecurityContextHolder.getContext().setAuthentication( getAuthentication( "ADMIN" ) );
+
+        getContinuum().addProject( new Project(), "" );
+    }
+
+    /**
+     * Check that method call doesn't proceed when user doesn't have the required role.
+     * 
+     * @throws Exception
+     */
+    public void testMethodSecurityWithWrongRole()
+        throws Exception
+    {
+        assertNotNull( "continuum property is not set", getContinuum() );
+        assertNotNull( "securityInterceptor property in aspect is not set", getAspect().getSecurityInterceptor() );
+
+        SecurityContextHolder.getContext().setAuthentication( getAuthentication( "USER" ) );
+
+        try
+        {
+            getContinuum().addProject( new Project(), "" );
+            fail( AuthenticationException.class.getName() + " was not thrown." );
+        }
+        catch ( AccessDeniedException e )
+        {
+            // expected
+        }
+    }
+
+    /**
+     * Check that method call proceeds when user doesn't have the required role
+     * but security interceptor is not defined.
+     * 
+     * @throws Exception
+     */
+    public void testMethodSecurityWithoutSecurityInterceptor()
+        throws Exception
+    {
+        assertNotNull( "continuum property is not set", getContinuum() );
+
+        SecurityContextHolder.getContext().setAuthentication( getAuthentication( "USER" ) );
+        getAspect().setSecurityInterceptor( null );
+
+        getContinuum().addProject( new Project(), "" );
+    }
+
+    protected void tearDown()
+        throws Exception
+    {
+        SecurityContextHolder.getContext().setAuthentication( null );
+        super.tearDown();
+    }
+}

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/AbstractMethodSecurityTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java?rev=427069&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java Mon Jul 31 03:45:47 2006
@@ -0,0 +1,444 @@
+package org.apache.maven.continuum.security.acegi.aspectj;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.continuum.Continuum;
+import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.configuration.ConfigurationService;
+import org.apache.maven.continuum.model.project.BuildDefinition;
+import org.apache.maven.continuum.model.project.BuildResult;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.model.project.ProjectNotifier;
+import org.apache.maven.continuum.model.project.Schedule;
+import org.apache.maven.continuum.model.system.ContinuumUser;
+import org.apache.maven.continuum.model.system.UserGroup;
+import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
+import org.apache.maven.continuum.security.ContinuumSecurity;
+import org.codehaus.plexus.util.dag.CycleDetectedException;
+
+/**
+ * Stub implementation of {@link Continuum} with empty implementations.
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ContinuumStub
+    implements Continuum
+{
+
+    public void addBuildDefinition( int projectId, BuildDefinition buildDefinition )
+        throws ContinuumException
+    {
+    }
+
+    public void addBuildDefinitionFromParams( int projectId, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public ContinuumProjectBuildingResult addMavenOneProject( String metadataUrl )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public ContinuumProjectBuildingResult addMavenTwoProject( String metadataUrl )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public void addNotifier( int projectId, ProjectNotifier notifier )
+        throws ContinuumException
+    {
+    }
+
+    public void addNotifier( int projectId, String notifierType, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public int addProject( Project project, String executorId )
+        throws ContinuumException
+    {
+        return 0;
+    }
+
+    public void addSchedule( Schedule schedule )
+        throws ContinuumException
+    {
+    }
+
+    public void addUser( ContinuumUser user )
+        throws ContinuumException
+    {
+    }
+
+    public void addUser( Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public void addUserGroup( UserGroup userGroup )
+    {
+    }
+
+    public void addUserGroup( Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public void buildProject( int projectId )
+        throws ContinuumException
+    {
+    }
+
+    public void buildProject( int projectId, int trigger )
+        throws ContinuumException
+    {
+    }
+
+    public void buildProject( int projectId, int buildDefinitionId, int trigger )
+        throws ContinuumException
+    {
+    }
+
+    public void buildProjects()
+        throws ContinuumException
+    {
+    }
+
+    public void buildProjects( int trigger )
+        throws ContinuumException
+    {
+    }
+
+    public void buildProjects( Schedule schedule )
+        throws ContinuumException
+    {
+    }
+
+    public void checkoutProject( int projectId )
+        throws ContinuumException
+    {
+    }
+
+    public Collection getAllProjects( int start, int end )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public List getAllProjectsWithAllDetails( int start, int end )
+    {
+        return null;
+    }
+
+    public BuildDefinition getBuildDefinition( int projectId, int buildDefinitionId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public List getBuildDefinitions( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public String getBuildOutput( int projectId, int buildId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public BuildResult getBuildResult( int buildId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public BuildResult getBuildResultByBuildNumber( int projectId, int buildNumber )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Collection getBuildResultsForProject( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Map getBuildResultsInSuccess()
+    {
+        return null;
+    }
+
+    public List getChangesSinceLastSuccess( int projectId, int buildResultId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public ConfigurationService getConfiguration()
+    {
+        return null;
+    }
+
+    public BuildDefinition getDefaultBuildDefinition( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public String getFileContent( int projectId, String directory, String filename )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public List getFiles( int projectId, String currentDirectory )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public BuildResult getLatestBuildResultForProject( int projectId )
+    {
+        return null;
+    }
+
+    public Map getLatestBuildResults()
+    {
+        return null;
+    }
+
+    public ProjectNotifier getNotifier( int projectId, int notifierId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Project getProject( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Project getProjectWithAllDetails( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Project getProjectWithBuilds( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Project getProjectWithCheckoutResult( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Collection getProjects()
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public List getProjectsInBuildOrder()
+        throws CycleDetectedException, ContinuumException
+    {
+        return null;
+    }
+
+    public Collection getProjectsWithDependencies()
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Schedule getSchedule( int id )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public Collection getSchedules()
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public ContinuumSecurity getSecurity()
+    {
+        return null;
+    }
+
+    public ContinuumUser getUser( int userId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public UserGroup getUserGroup( int userGroupId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public List getUserGroups()
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public List getUsers()
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public File getWorkingDirectory( int projectId )
+        throws ContinuumException
+    {
+        return null;
+    }
+
+    public boolean isInBuildingQueue( int projectId )
+        throws ContinuumException
+    {
+        return false;
+    }
+
+    public boolean isInBuildingQueue( int projectId, int buildDefinitionId )
+        throws ContinuumException
+    {
+        return false;
+    }
+
+    public boolean isInCheckoutQueue( int projectId )
+        throws ContinuumException
+    {
+        return false;
+    }
+
+    public void reloadConfiguration()
+        throws ContinuumException
+    {
+    }
+
+    public void removeBuildDefinition( int projectId, int buildDefinitionId )
+        throws ContinuumException
+    {
+    }
+
+    public void removeNotifier( int projectId, int notifierId )
+        throws ContinuumException
+    {
+    }
+
+    public void removeProject( int projectId )
+        throws ContinuumException
+    {
+    }
+
+    public void removeSchedule( int scheduleId )
+        throws ContinuumException
+    {
+    }
+
+    public void removeUser( int userId )
+        throws ContinuumException
+    {
+    }
+
+    public void removeUserGroup( int userGroupId )
+        throws ContinuumException
+    {
+    }
+
+    public void updateBuildDefinition( BuildDefinition buildDefinition, int projectId )
+        throws ContinuumException
+    {
+    }
+
+    public void updateBuildDefinition( int projectId, int buildDefinitionId, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public void updateConfiguration( Map parameters )
+        throws ContinuumException
+    {
+    }
+
+    public void updateNotifier( int projectId, int notifierId, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public void updateNotifier( int projectId, ProjectNotifier notifier )
+        throws ContinuumException
+    {
+    }
+
+    public void updateProject( Project project )
+        throws ContinuumException
+    {
+    }
+
+    public void updateSchedule( Schedule schedule )
+        throws ContinuumException
+    {
+    }
+
+    public void updateSchedule( int scheduleId, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public void updateUser( ContinuumUser user )
+        throws ContinuumException
+    {
+    }
+
+    public void updateUser( int userId, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+    public void updateUserGroup( UserGroup userGroup )
+        throws ContinuumException
+    {
+    }
+
+    public void updateUserGroup( int userGroupId, Map configuration )
+        throws ContinuumException
+    {
+    }
+
+}

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/ContinuumStub.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java?rev=427069&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java Mon Jul 31 03:45:47 2006
@@ -0,0 +1,63 @@
+package org.apache.maven.continuum.security.acegi.aspectj;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.acegisecurity.Authentication;
+import org.acegisecurity.GrantedAuthority;
+import org.acegisecurity.GrantedAuthorityImpl;
+import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
+import org.apache.maven.continuum.Continuum;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusContainer;
+
+public class MethodSecurityPlexusTest
+    extends AbstractMethodSecurityTest
+{
+
+    private PlexusContainer pc;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        InputStream is = Thread.currentThread().getContextClassLoader()
+            .getResourceAsStream( "org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml" );
+
+        pc = new DefaultPlexusContainer();
+        pc.setConfigurationResource( new InputStreamReader( is ) );
+        pc.initialize();
+        pc.start();
+        setContinuum( (Continuum) pc.lookup( "org.apache.maven.continuum.Continuum" ) );
+    }
+
+    protected Authentication getAuthentication( String role )
+    {
+        return new UsernamePasswordAuthenticationToken( "marissa", "koala",
+                                                        new GrantedAuthority[] { new GrantedAuthorityImpl( "ROLE_"
+                                                            + role ) } );
+    }
+
+    protected void tearDown()
+        throws Exception
+    {
+        pc.dispose();
+        super.tearDown();
+    }
+}

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java?rev=427069&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java Mon Jul 31 03:45:47 2006
@@ -0,0 +1,69 @@
+package org.apache.maven.continuum.security.acegi.aspectj;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.acegisecurity.MockAccessDecisionManager;
+import org.acegisecurity.MockAuthenticationManager;
+import org.acegisecurity.MockRunAsManager;
+import org.acegisecurity.intercept.method.MethodDefinitionMap;
+import org.acegisecurity.intercept.method.MethodDefinitionSourceMapping;
+import org.acegisecurity.intercept.method.aspectj.AspectJSecurityInterceptor;
+import org.apache.maven.continuum.Continuum;
+import org.codehaus.plexus.acegi.intercept.method.aspectj.AspectJSecurityInterceptorHelper;
+
+/**
+ * Test for {@link MethodSecurityAspect}
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class MethodSecurityTest
+    extends AbstractMethodSecurityTest
+{
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        MethodDefinitionSourceMapping mapping = new MethodDefinitionSourceMapping();
+        mapping.setMethodName( Continuum.class.getCanonicalName() + ".addProject" );
+        mapping.setConfigAttributes( Arrays.asList( new String[] { "MOCK_ADMIN" } ) );
+
+        List mappings = new ArrayList();
+        mappings.add( mapping );
+
+        MethodDefinitionMap methodDefinitionSource = new MethodDefinitionMap();
+        methodDefinitionSource.setMappings( mappings );
+
+        AspectJSecurityInterceptor si = new AspectJSecurityInterceptor();
+        si.setObjectDefinitionSource( methodDefinitionSource );
+        si.setAccessDecisionManager(new MockAccessDecisionManager());
+        si.setAuthenticationManager(new MockAuthenticationManager());
+        si.setRunAsManager(new MockRunAsManager());
+
+        setContinuum( new ContinuumStub() );
+        AspectJSecurityInterceptorHelper helper = new AspectJSecurityInterceptorHelper();
+        helper.setAspectName( "org.apache.maven.continuum.security.acegi.aspectj.MethodSecurityAspect" );
+        helper.setSecurityInterceptor( si );
+        helper.initialize();
+        //        aspect = MethodSecurityAspect.aspectOf();
+    }
+}

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml?rev=427069&view=auto
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml (added)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml Mon Jul 31 03:45:47 2006
@@ -0,0 +1,134 @@
+<plexus>
+
+  <!-- load on start to inject values into the aspect -->
+  <load-on-start>
+    <component>
+      <role>org.codehaus.plexus.acegi.intercept.method.aspectj.AspectJSecurityInterceptorHelper</role>
+    </component>
+  </load-on-start>
+
+  <components>
+
+    <component>
+      <role>org.apache.maven.continuum.Continuum</role>
+      <implementation>org.apache.maven.continuum.security.acegi.aspectj.ContinuumStub</implementation>
+      <requirements>
+      </requirements>
+    </component>
+
+    <!--
+     | ACEGI Configuration
+     -->
+     
+    <!-- Authentication -->
+
+    <component>
+      <role>org.acegisecurity.providers.ProviderManager</role>
+      <implementation>org.acegisecurity.providers.ProviderManager</implementation>
+      <requirements>
+        <requirement>
+          <role>org.acegisecurity.providers.dao.DaoAuthenticationProvider</role>
+          <field-name>providers</field-name>
+        </requirement>
+      </requirements>
+    </component>
+
+    <!-- In memory database used only for testing -->
+    <component>
+      <role>org.acegisecurity.userdetails.UserDetailsService</role>
+      <implementation>org.acegisecurity.userdetails.memory.InMemoryDaoImpl</implementation>
+      <configuration>
+        <userProperties>
+          <property>
+            <name>marissa</name>
+            <value>koala,ROLE_USER,ROLE_SUPERVISOR</value>
+          </property>
+          <property>
+            <name>dianne</name>
+            <value>emu,ROLE_USER</value>
+          </property>
+          <property>
+            <name>scott</name>
+            <value>wombat,ROLE_USER</value>
+          </property>
+        </userProperties>
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.acegisecurity.providers.dao.DaoAuthenticationProvider</role>
+      <implementation>org.acegisecurity.providers.dao.DaoAuthenticationProvider</implementation>
+      <requirements>
+        <requirement>
+          <role>org.acegisecurity.userdetails.UserDetailsService</role>
+          <field-name>userDetailsService</field-name>
+        </requirement>
+      </requirements>
+    </component>
+
+    <!-- authorization -->
+
+    <component>
+      <role>org.codehaus.plexus.acegi.intercept.method.aspectj.AspectJSecurityInterceptorHelper</role>
+      <implementation>org.codehaus.plexus.acegi.intercept.method.aspectj.AspectJSecurityInterceptorHelper</implementation>
+      <requirements>
+        <requirement>
+          <role>org.acegisecurity.intercept.method.aspectj.AspectJSecurityInterceptor</role>
+          <field-name>securityInterceptor</field-name>
+        </requirement>
+      </requirements>
+      <configuration>
+        <aspectName>org.apache.maven.continuum.security.acegi.aspectj.MethodSecurityAspect</aspectName>
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.acegisecurity.intercept.method.aspectj.AspectJSecurityInterceptor</role>
+      <implementation>org.acegisecurity.intercept.method.aspectj.AspectJSecurityInterceptor</implementation>
+      <requirements>
+        <requirement>
+          <role>org.acegisecurity.providers.ProviderManager</role>
+          <field-name>authenticationManager</field-name>
+        </requirement>
+        <requirement>
+          <role>org.acegisecurity.AccessDecisionManager</role>
+          <field-name>accessDecisionManager</field-name>
+        </requirement>
+      </requirements>
+      <configuration>
+        <objectDefinitionSource implementation="org.acegisecurity.intercept.method.MethodDefinitionMap">
+          <mappings>
+            <methodDefinitionSourceMapping>
+              <methodName>org.apache.maven.continuum.Continuum.addProject</methodName>
+              <configAttributes>
+                <configAttribute>ROLE_ADMIN</configAttribute>
+              </configAttributes>
+            </methodDefinitionSourceMapping>
+          </mappings>
+        </objectDefinitionSource>
+      </configuration>
+    </component>
+
+    <!-- An access decision manager used by the business objects -->
+    <component>
+      <role>org.acegisecurity.AccessDecisionManager</role>
+      <implementation>org.acegisecurity.vote.AffirmativeBased</implementation>
+      <requirements>
+        <requirement>
+          <role>org.acegisecurity.vote.RoleVoter</role>
+          <field-name>decisionVoters</field-name>
+        </requirement>
+      </requirements>
+      <configuration>
+        <allowIfAllAbstainDecisions>false</allowIfAllAbstainDecisions>
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.acegisecurity.vote.RoleVoter</role>
+      <implementation>org.acegisecurity.vote.RoleVoter</implementation>
+    </component>
+
+  </components>
+
+</plexus>

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/resources/org/apache/maven/continuum/security/acegi/aspectj/MethodSecurityPlexusTest.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"