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


Reply via email to