--- /dev/null
+/*
+ * Copyright 2014 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.
+ */
+package org.apache.archiva.webdav;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import org.apache.commons.io.FileUtils;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+/**
+ * Rule to help creating folder for repository based on testmethod name
+ * @author Eric
+ */
+public class ArchivaTemporaryFolderRule implements TestRule {
+ private File d;
+ private Description desc = Description.EMPTY;
+
+ public void before() throws IOException {
+ // hard coded maven target file
+ File f1 = new File("target" + File.separator + "archivarepo" + File.separator + ArchivaTemporaryFolderRule.resumepackage(desc.getClassName()) + File.separator + desc.getMethodName());
+ f1.mkdirs();
+ Path p = Files.createDirectories(f1.toPath());
+ d = p.toFile();
+ }
+
+ public File getRoot() {
+ return d;
+ }
+
+ public void after() throws IOException {
+ FileUtils.deleteDirectory(getRoot());
+ }
+
+ @Override
+ public Statement apply(Statement base, Description description) {
+ desc = description;
+ return statement(base);
+ }
+
+ private Statement statement(final Statement base) {
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ before();
+ try {
+ base.evaluate();
+ } finally {
+ after();
+ }
+ }
+ };
+ }
+ /**
+ * Return a filepath from FQN class name with only first char of package and classname
+ * @param packagename
+ * @return
+ */
+ public static String resumepackage(String packagename) {
+ StringBuilder sb = new StringBuilder();
+ String[] p = packagename.split("\\.");
+ for (int i = 0; i < p.length - 2; i++)
+ {
+ sb.append(p[i].charAt(0)).append(File.separator);
+ }
+ sb.append(p[p.length - 1]);
+ return sb.toString();
+ }
+
+}
*/
-import com.gargoylesoftware.htmlunit.WebRequest;
-import com.gargoylesoftware.htmlunit.WebResponse;
import junit.framework.TestCase;
import net.sf.ehcache.CacheManager;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.webdav.util.MavenIndexerCleaner;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
import org.apache.jackrabbit.webdav.DavSessionProvider;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.mock.web.MockServletConfig;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.context.ContextConfiguration;
-import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.WebApplicationContext;
import javax.inject.Inject;
-import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.eq;
+import org.junit.Rule;
/**
* RepositoryServletSecurityTest Test the flow of the authentication and authorization checks. This does not necessarily
{
protected static final String REPOID_INTERNAL = "internal";
-
- protected File repoRootInternal;
-
@Inject
protected ArchivaConfiguration archivaConfiguration;
@Inject
ApplicationContext applicationContext;
+
+ @Rule
+ public ArchivaTemporaryFolderRule repoRootInternal = new ArchivaTemporaryFolderRule();
+
@Before
@Override
public void setUp()
throws Exception
{
+
super.setUp();
String appserverBase =
File testConf = new File( "src/test/resources/repository-archiva.xml" );
File testConfDest = new File( appserverBase, "conf/archiva.xml" );
FileUtils.copyFile( testConf, testConfDest );
-
- repoRootInternal = new File( appserverBase, "data/repositories/internal" );
-
+
+
+
Configuration config = archivaConfiguration.getConfiguration();
-
- if ( !config.getManagedRepositoriesAsMap().containsKey( REPOID_INTERNAL ) )
- {
- config.addManagedRepository(
- createManagedRepository( REPOID_INTERNAL, "Internal Test Repo", repoRootInternal ) );
+ // clear managed repository
+ List<ManagedRepositoryConfiguration> f1 = new ArrayList<>(config.getManagedRepositories());
+ for (ManagedRepositoryConfiguration f: f1 ) {
+ config.removeManagedRepository(f);
}
+ assertEquals(0,config.getManagedRepositories().size());
+ // add internal repo
+ config.addManagedRepository(
+ createManagedRepository( REPOID_INTERNAL, "Internal Test Repo", repoRootInternal.getRoot() ) );
+
saveConfiguration( archivaConfiguration );
CacheManager.getInstance().clearAll();
return repo;
}
- protected void saveConfiguration()
+ /*protected void saveConfiguration()
throws Exception
{
saveConfiguration( archivaConfiguration );
- }
+ }*/
protected void saveConfiguration( ArchivaConfiguration archivaConfiguration )
throws Exception
{
- archivaConfiguration.save( archivaConfiguration.getConfiguration() );
+ archivaConfiguration.save( archivaConfiguration.getConfiguration() );
}
- protected void setupCleanRepo( File repoRootDir )
+ /*protected void setupCleanRepo( File repoRootDir )
throws IOException
{
- FileUtils.deleteDirectory( repoRootDir );
- if ( !repoRootDir.exists() )
- {
- repoRootDir.mkdirs();
- }
- }
+ }*/
@Override
@After
throws Exception
{
- if ( repoRootInternal.exists() )
+ /* if ( repoRootInternal.exists() )
{
FileUtils.deleteDirectory( repoRootInternal );
- }
+ }*/
applicationContext.getBean( MavenIndexerCleaner.class ).cleanupIndex();
public void testPutWithInvalidUserAndGuestHasNoWriteAccess()
throws Exception
{
- setupCleanRepo( repoRootInternal );
-
+
InputStream is = getClass().getResourceAsStream( "/artifact.jar" );
assertNotNull( "artifact.jar inputstream", is );
public void testPutWithInvalidUserAndGuestHasWriteAccess()
throws Exception
{
- setupCleanRepo( repoRootInternal );
-
+
servlet.setDavSessionProvider( davSessionProvider );
ArchivaDavResourceFactory archivaDavResourceFactory = (ArchivaDavResourceFactory) servlet.getResourceFactory();
public void testPutWithValidUserWithNoWriteAccess()
throws Exception
{
- setupCleanRepo( repoRootInternal );
-
+
servlet.setDavSessionProvider( davSessionProvider );
ArchivaDavResourceFactory archivaDavResourceFactory = (ArchivaDavResourceFactory) servlet.getResourceFactory();
public void testPutWithValidUserWithWriteAccess()
throws Exception
{
- setupCleanRepo( repoRootInternal );
- assertTrue( repoRootInternal.exists() );
+ assertTrue( repoRootInternal.getRoot().exists() );
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
String putUrl = "http://machine.com/repository/internal/path/to/artifact.jar";
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
- File artifactFile = new File( repoRootInternal, commonsLangJar );
+ File artifactFile = new File( repoRootInternal.getRoot(), commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
mockHttpServletRequest.setMethod( "GET" );
mockHttpServletRequest.setRequestURI( "/repository/internal/" + commonsLangJar );
-
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
servlet.service( mockHttpServletRequest, mockHttpServletResponse );
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
- File artifactFile = new File( repoRootInternal, commonsLangJar );
+ File artifactFile = new File( repoRootInternal.getRoot(), commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
mockHttpServletRequest.setMethod( "GET" );
mockHttpServletRequest.setRequestURI( "/repository/internal/" + commonsLangJar );
-
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
servlet.service( mockHttpServletRequest, mockHttpServletResponse );
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
- File artifactFile = new File( repoRootInternal, commonsLangJar );
+ File artifactFile = new File( repoRootInternal.getRoot(), commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
mockHttpServletRequest.setMethod( "GET" );
mockHttpServletRequest.setRequestURI( "/repository/internal/" + commonsLangJar );
-
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
servlet.service( mockHttpServletRequest, mockHttpServletResponse );
String commonsLangJar = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar";
String expectedArtifactContents = "dummy-commons-lang-artifact";
- File artifactFile = new File( repoRootInternal, commonsLangJar );
+ File artifactFile = new File( repoRootInternal.getRoot(), commonsLangJar );
artifactFile.getParentFile().mkdirs();
FileUtils.writeStringToFile( artifactFile, expectedArtifactContents, Charset.defaultCharset() );
assertEquals( HttpServletResponse.SC_UNAUTHORIZED, mockHttpServletResponse.getStatus() );
}
+
}