Author: jmcconnell
Date: Wed Sep 13 23:15:15 2006
New Revision: 443255
URL: http://svn.apache.org/viewvc?view=rev&rev=443255
Log:
another joakim patch, this time adding some test cases for this previous patch
and fixing up some permissions
Added:
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.java
(with props)
maven/archiva/trunk/archiva-webapp/src/test/resources/org/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.xml
(with props)
Modified:
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/DefaultArchivaDefaults.java
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccess.java
Modified:
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/DefaultArchivaDefaults.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/DefaultArchivaDefaults.java?view=diff&rev=443255&r1=443254&r2=443255
==============================================================================
---
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/DefaultArchivaDefaults.java
(original)
+++
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/DefaultArchivaDefaults.java
Wed Sep 13 23:15:15 2006
@@ -17,6 +17,8 @@
*/
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.codehaus.plexus.security.rbac.Operation;
import org.codehaus.plexus.security.rbac.Permission;
import org.codehaus.plexus.security.rbac.RBACManager;
@@ -24,6 +26,7 @@
import org.codehaus.plexus.security.rbac.Role;
import org.codehaus.plexus.security.user.User;
import org.codehaus.plexus.security.user.UserManager;
+import org.codehaus.plexus.security.user.UserNotFoundException;
/**
* DefaultArchivaDefaults
@@ -34,7 +37,7 @@
*/
public class DefaultArchivaDefaults
extends AbstractLogEnabled
- implements ArchivaDefaults
+ implements ArchivaDefaults, Initializable
{
/**
* @plexus.requirement
@@ -61,6 +64,7 @@
ensurePermissionsExist();
ensureRolesExist();
ensureUsersExist();
+
initialized = true;
}
@@ -160,15 +164,32 @@
public void ensureUsersExist()
{
- if ( !userManager.userExists( GUEST_USERNAME ) )
+ if( !userManager.userExists( GUEST_USERNAME ))
{
this.guestUser = userManager.createUser( GUEST_USERNAME, "Guest
User", "" );
this.guestUser = userManager.addUser( this.guestUser );
}
+ else
+ {
+ try
+ {
+ this.guestUser = userManager.findUser( GUEST_USERNAME );
+ }
+ catch ( UserNotFoundException e )
+ {
+ throw new RuntimeException( "Unable to find user '" +
GUEST_USERNAME + "'", e );
+ }
+ }
}
public User getGuestUser()
{
return this.guestUser;
+ }
+
+ public void initialize()
+ throws InitializationException
+ {
+ ensureDefaultsExist();
}
}
Modified:
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccess.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccess.java?view=diff&rev=443255&r1=443254&r2=443255
==============================================================================
---
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccess.java
(original)
+++
maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccess.java
Wed Sep 13 23:15:15 2006
@@ -135,7 +135,7 @@
routeToErrorPage( response, "Invalid Repository ID." );
return;
}
-
+
// Authentication Tests.
AuthenticationResult result;
@@ -147,7 +147,8 @@
if ( !result.isAuthenticated() )
{
// Must Authenticate.
- httpAuth.challenge( request, response, "Repository " +
repoconfig.getName(), null );
+ httpAuth.challenge( request, response, "Repository " +
repoconfig.getName(),
+ new AuthenticationException("User
Credentials Invalid") );
return;
}
}
Added:
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.java
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.java?view=auto&rev=443255
==============================================================================
---
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.java
(added)
+++
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.java
Wed Sep 13 23:15:15 2006
@@ -0,0 +1,79 @@
+package org.apache.maven.archiva.web.servlet.repository;
+
+/*
+ * Copyright 2001-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.archiva.web.servlet.PlexusServlet;
+import org.codehaus.plexus.PlexusTestCase;
+
+/**
+ * RepositoryAccessTest
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryAccessTest
+ extends PlexusTestCase
+{
+ private void assertRequestPath( String expectedId, String expectedPath,
String rawpath )
+ throws Exception
+ {
+ RepositoryAccess repoaccess = (RepositoryAccess) lookup(
PlexusServlet.ROLE, "repositoryAccess" );
+
+ RepositoryAccess.RequestPath requestPath =
repoaccess.getRepositoryPath( rawpath );
+
+ if ( expectedId == null )
+ {
+ // special case, should be null.
+ assertNull( requestPath );
+ return;
+ }
+
+ assertNotNull( requestPath );
+
+ assertEquals( expectedId, requestPath.repoId );
+ assertEquals( expectedPath, requestPath.path );
+ }
+
+ public void testGetRepoPath() throws Exception
+ {
+ // Test for paths with no id.
+ assertRequestPath( null, null, null );
+ assertRequestPath( null, null, "" );
+ assertRequestPath( null, null, "/" );
+
+ // Test for paths with root browse
+ assertRequestPath( "central", "/", "/central" );
+ assertRequestPath( "central", "/", "/central/" );
+ assertRequestPath( "snapshots", "/", "/snapshots/" );
+
+ // Test for paths deep within repository.
+ assertRequestPath( "central", "/org/apache/maven/",
"/central/org/apache/maven/" );
+ assertRequestPath( "snapshots", "/org/codehaus/mojo",
"/snapshots/org/codehaus/mojo" );
+
+ assertRequestPath( "central",
"/org/apache/maven/archiva/metadata.xml",
+ "/central/org/apache/maven/archiva/metadata.xml"
);
+ assertRequestPath( "sandbox",
"/org/company/experiment/1.0/experiment-1.0.jar.pom",
+
"/sandbox/org/company/experiment/1.0/experiment-1.0.jar.pom" );
+
+ // Test for paths with "/../" nastyness
+ assertRequestPath( "central", "/", "/central/.." );
+ assertRequestPath( "central", "/", "/central/../../../" );
+ assertRequestPath( "central", "/", "/central/org/../../etc/passwd" );
+ assertRequestPath( "central", "/etc/passwd", "/central//etc/passwd" );
+ assertRequestPath( "central", "/org/codehaus/mojo",
"/central/org/apache/../codehaus/mojo" );
+ }
+}
Propchange:
maven/archiva/trunk/archiva-webapp/src/test/java/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.xml
URL:
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.xml?view=auto&rev=443255
==============================================================================
---
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.xml
(added)
+++
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.xml
Wed Sep 13 23:15:15 2006
@@ -0,0 +1,174 @@
+<!--
+ ~ Copyright 2005-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.
+ -->
+
+<plexus>
+ <components>
+ <!--
+ | Logger manager
+ -->
+ <component>
+ <role>org.codehaus.plexus.logging.LoggerManager</role>
+
<implementation>org.codehaus.plexus.logging.log4j.Log4JLoggerManager</implementation>
+ <lifecycle-handler>basic</lifecycle-handler>
+
+ <configuration>
+ <threshold>DEBUG</threshold>
+ <default-appender>console</default-appender>
+ <appenders>
+ <appender>
+ <id>console</id>
+ <threshold>DEBUG</threshold>
+ <type>org.apache.log4j.ConsoleAppender</type>
+ <!-- <conversion-pattern>%d [%t] %-5p %-30c{1} -
%m%n</conversion-pattern> -->
+ <conversion-pattern>%r [%t] %-5p %c %x - %m%n</conversion-pattern>
+ </appender>
+ </appenders>
+ <levels>
+ <!-- Help identify bugs during testing -->
+ <level>
+ <hierarchy>org.apache.maven</hierarchy>
+ <level>DEBUG</level>
+ </level>
+ <level>
+ <hierarchy>org.codehaus.plexus.security</hierarchy>
+ <level>DEBUG</level>
+ </level>
+ <!-- squelch noisy objects (for now) -->
+ <level>
+ <hierarchy>org.codehaus.plexus.mailsender.MailSender</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>org.quartz</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>org.apache.jasper</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>com.opensymphony.xwork</hierarchy>
+ <level>DEBUG</level>
+ </level>
+ <level>
+ <hierarchy>com.opensymphony.webwork</hierarchy>
+ <level>DEBUG</level>
+ </level>
+ <level>
+ <hierarchy>org.codehaus.plexus.PlexusContainer</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>JPOX</hierarchy>
+ <level>WARN</level>
+ </level>
+ <level>
+ <hierarchy>freemarker</hierarchy>
+ <level>WARN</level>
+ </level>
+ <level>
+ <hierarchy>freemarker</hierarchy>
+ <level>WARN</level>
+ </level>
+ </levels>
+ </configuration>
+ </component>
+
+
+ <component>
+ <role>org.codehaus.plexus.jdo.JdoFactory</role>
+
<implementation>org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory</implementation>
+ <configuration>
+
+ <!-- HSQLDB Configuration -->
+ <!--
+ NOTE: NO NOT USE THIS CONFIGURATION FOR A PRODUCTION SYSTEM.
+ HSQLDB keeps all data in memory at all times.
+
+ NOTE: JPOX 1.1.1 won't create the tables on start
+ http://www.jpox.org/servlet/jira/browse/CORE-2946
+ -->
+
+ <!--
+ <driverName>org.hsqldb.jdbcDriver</driverName>
+ <url>jdbc:hsqldb:mem:test</url>
+ <userName>sa</userName>
+ <password></password>
+ -->
+
+ <!-- Apache Derby Configuration -->
+ <driverName>org.apache.derby.jdbc.EmbeddedDriver</driverName>
+ <url>jdbc:derby:${basedir}/target/repoaccess/database;create=true</url>
+ <userName>sa</userName>
+ <password></password>
+
+ <!-- MySql Configuration -->
+ <!--
+ <driverName>com.mysql.jdbc.Driver</driverName>
+ <url>jdbc:mysql://localhost/archiva</url>
+ <userName>archiva</userName>
+ <password>archiva</password>
+ -->
+
+ <!-- Postgresql Configuration -->
+ <!--
+ <driverName>org.postgresql.Driver</driverName>
+ <url>jdbc:postgresql://localhost/continuum</url>
+ <userName>username</userName>
+ <password></password>
+ -->
+
+ <!-- JPOX and JDO configuration -->
+
<persistenceManagerFactoryClass>org.jpox.PersistenceManagerFactoryImpl</persistenceManagerFactoryClass>
+ <otherProperties>
+ <property>
+ <name>javax.jdo.PersistenceManagerFactoryClass</name>
+ <value>org.jpox.PersistenceManagerFactoryImpl</value>
+ </property>
+ <property>
+ <name>org.jpox.autoCreateSchema</name>
+ <value>true</value>
+ </property>
+ <property>
+ <name>org.jpox.autoStartMechanism</name>
+ <value>SchemaTable</value>
+ </property>
+ <property>
+ <name>org.jpox.autoStartMechanismMode</name>
+ <value>Ignored</value>
+ </property>
+ <property>
+ <name>org.jpox.validateTables</name>
+ <value>false</value>
+ </property>
+ <property>
+ <name>org.jpox.validateConstraints</name>
+ <value>false</value>
+ </property>
+ <property>
+ <name>org.jpox.transactionIsolation</name>
+ <value>READ_UNCOMMITTED</value>
+ </property>
+ <property>
+ <name>org.jpox.poid.transactionIsolation</name>
+ <value>READ_UNCOMMITTED</value>
+ </property>
+ </otherProperties>
+ </configuration>
+ </component>
+
+ </components>
+</plexus>
Propchange:
maven/archiva/trunk/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/servlet/repository/RepositoryAccessTest.xml
------------------------------------------------------------------------------
svn:eol-style = native