diff options
author | James William Dumay <jdumay@apache.org> | 2008-06-04 03:50:03 +0000 |
---|---|---|
committer | James William Dumay <jdumay@apache.org> | 2008-06-04 03:50:03 +0000 |
commit | a0091f489877ebc8aeea7d71a1bdbe967a19d83a (patch) | |
tree | 1968e7aff1883bd915a840257a5851159c48dd38 /archiva-modules | |
parent | f4ce1aafc2ebda3ccb955b3ae299506f539a198c (diff) | |
download | archiva-a0091f489877ebc8aeea7d71a1bdbe967a19d83a.tar.gz archiva-a0091f489877ebc8aeea7d71a1bdbe967a19d83a.zip |
MRM-781 - Removal of Archiva-Webdav implementation in favor of Jackrabbit-webdav
* Reenabled RepositoryServletBrowseTest
* Added Extra DavResourceLocator tests
* Increased Litmus test score to 87.7%
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@662968 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules')
4 files changed, 91 insertions, 69 deletions
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java index d73f4f194..ba51a894f 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java @@ -222,7 +222,7 @@ public class ArchivaDavResourceFactory setHeaders( locator, response ); // compatibility with MRM-440 to ensure browsing the repository works ok - if ( resource.isCollection() && !resource.getLocator().getResourcePath().endsWith( "/" ) ) + if ( resource.isCollection() && !resource.getLocator().getHref(true).endsWith("/" ) ) { throw new BrowserRedirectException( resource.getHref() ); } diff --git a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocator.java b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocator.java index 32bb76c2b..b936eb6e7 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocator.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocator.java @@ -60,14 +60,14 @@ public class ArchivaDavResourceLocator { hrefPrefix = hrefPrefix.substring( 0, hrefPrefix.length() - 1 ); } + + href = hrefPrefix + escapedPath; //Remove trailing slashes otherwise Text.getRelativeParent fails if (resourcePath.endsWith("/") && resourcePath.length() > 1) { this.resourcePath = resourcePath.substring( 0, resourcePath.length() - 1 ); } - - href = hrefPrefix + escapedPath; } public String getRepositoryId() @@ -108,7 +108,7 @@ public class ArchivaDavResourceLocator public String getHref( boolean isCollection ) { // avoid doubled trailing '/' for the root item - String suffix = ( isCollection && !isRootLocation() ) ? "/" : ""; + String suffix = ( isCollection && !isRootLocation() && !href.endsWith("/") ) ? "/" : ""; return href + suffix; } diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocatorTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocatorTest.java index c40ea1d65..e81c134e5 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocatorTest.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocatorTest.java @@ -35,13 +35,30 @@ public class ArchivaDavResourceLocatorTest extends TestCase super.setUp(); factory = new ArchivaDavLocatorFactory(); } + + public void testAvoidDoubleSlashInHref() + throws Exception + { + String prefix = "http://myproxy/"; + String href = "/repository/internal/"; + ArchivaDavResourceLocator locator = getLocator(prefix, href); + + assertEquals("internal", locator.getRepositoryId()); + assertEquals("", locator.getWorkspaceName()); + assertEquals("", locator.getWorkspacePath()); + assertEquals("http://myproxy/", locator.getPrefix()); + assertEquals("http://myproxy/repository/internal/", locator.getHref(false)); + assertEquals("http://myproxy/repository/internal/", locator.getHref(true)); + assertEquals("/repository/internal", locator.getResourcePath()); + assertEquals("/repository/internal", locator.getRepositoryPath()); + } public void testLocatorWithPrefixHref() throws Exception { String prefix = "http://myproxy/"; String href = "/repository/internal"; - ArchivaDavResourceLocator locator = (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href); + ArchivaDavResourceLocator locator = getLocator(prefix, href); assertEquals("internal", locator.getRepositoryId()); assertEquals("", locator.getWorkspaceName()); @@ -58,7 +75,7 @@ public class ArchivaDavResourceLocatorTest extends TestCase { String prefix = "http://myproxy/"; String href = "http://myproxy/repository/internal"; - ArchivaDavResourceLocator locator = (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href); + ArchivaDavResourceLocator locator = getLocator(prefix, href); assertEquals("internal", locator.getRepositoryId()); assertEquals("", locator.getWorkspaceName()); @@ -75,7 +92,7 @@ public class ArchivaDavResourceLocatorTest extends TestCase { String prefix = "http://myproxy/"; String href = "/"; - ArchivaDavResourceLocator locator = (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href); + ArchivaDavResourceLocator locator = getLocator(prefix, href); assertEquals("", locator.getRepositoryId()); assertEquals("", locator.getWorkspaceName()); @@ -86,4 +103,9 @@ public class ArchivaDavResourceLocatorTest extends TestCase assertEquals("/", locator.getResourcePath()); assertEquals("/", locator.getRepositoryPath()); } + + private ArchivaDavResourceLocator getLocator( String prefix, String href ) + { + return (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href); + } } diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java index 4e50b452a..885b8c1e6 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java @@ -1,62 +1,62 @@ -//package org.apache.maven.archiva.webdav; -// -///* -// * Licensed to the Apache Software Foundation (ASF) under one -// * or more contributor license agreements. See the NOTICE file -// * distributed with this work for additional information -// * regarding copyright ownership. The ASF licenses this file -// * to you 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 com.meterware.httpunit.GetMethodWebRequest; -//import com.meterware.httpunit.WebLink; -//import com.meterware.httpunit.WebRequest; -//import com.meterware.httpunit.WebResponse; -// -//import java.io.File; -// -//import javax.servlet.http.HttpServletResponse; -// -///** -// * RepositoryServletBrowseTest -// * -// * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> -// * @version $Id$ -// */ -//public class RepositoryServletBrowseTest -// extends AbstractRepositoryServletTestCase -//{ -// public void testBrowse() -// throws Exception -// { -// new File( repoRootInternal, "org/apache/archiva" ).mkdirs(); -// new File( repoRootInternal, "net/sourceforge" ).mkdirs(); -// new File( repoRootInternal, "commons-lang" ).mkdirs(); -// -// WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" ); -// WebResponse response = sc.getResponse( request ); -// assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() ); -// -// // dumpResponse( response ); -// -// WebLink links[] = response.getLinks(); -// String expectedLinks[] = new String[] { "./commons-lang/", "./net/", "./org/" }; -// -// assertEquals( "Links.length", expectedLinks.length, links.length ); -// for ( int i = 0; i < links.length; i++ ) -// { -// assertEquals( "Link[" + i + "]", expectedLinks[i], links[i].getURLString() ); -// } -// } -//} +package org.apache.maven.archiva.webdav; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 com.meterware.httpunit.GetMethodWebRequest; +import com.meterware.httpunit.WebLink; +import com.meterware.httpunit.WebRequest; +import com.meterware.httpunit.WebResponse; + +import java.io.File; + +import javax.servlet.http.HttpServletResponse; + +/** + * RepositoryServletBrowseTest + * + * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a> + * @version $Id$ + */ +public class RepositoryServletBrowseTest + extends AbstractRepositoryServletTestCase +{ + public void testBrowse() + throws Exception + { + new File( repoRootInternal, "org/apache/archiva" ).mkdirs(); + new File( repoRootInternal, "net/sourceforge" ).mkdirs(); + new File( repoRootInternal, "commons-lang" ).mkdirs(); + + WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" ); + WebResponse response = sc.getResponse( request ); + assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() ); + + // dumpResponse( response ); + + WebLink links[] = response.getLinks(); + String expectedLinks[] = new String[] { "./commons-lang/", "./net/", "./org/" }; + + assertEquals( "Links.length", expectedLinks.length, links.length ); + for ( int i = 0; i < links.length; i++ ) + { + assertEquals( "Link[" + i + "]", expectedLinks[i], links[i].getURLString() ); + } + } +} |