package org.carlspring.strongbox.storage.repository.artifact.locator;
import org.carlspring.strongbox.artifact.locator.ArtifactDirectoryLocator;
import org.carlspring.strongbox.artifact.locator.handlers.ArtifactLocationReportOperation;
import org.carlspring.strongbox.resource.ConfigurationResourceResolver;
import org.carlspring.strongbox.testing.TestCaseWithRepository;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.security.NoSuchAlgorithmException;
import java.util.regex.Matcher;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertFalse;
/**
* @author mtodorov
*/
public class ArtifactDirectoryLocatorTest
extends TestCaseWithRepository
{
private static final File REPOSITORY_BASEDIR = new File(ConfigurationResourceResolver.getVaultDirectory() +
"/storages/storage0/releases");
private ByteArrayOutputStream os;
private static PrintStream tempSysOut;
private boolean INITIALIZED;
@Before
public void setUp()
throws NoSuchAlgorithmException, XmlPullParserException, IOException
{
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/apache/maven/location-utils/1.0.1/location-utils-1.0.1.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/apache/maven/location-utils/1.0.1/location-utils-1.0.1.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/apache/maven/location-utils/1.0.2/location-utils-1.0.2.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/apache/maven/location-utils/1.0.2/location-utils-1.0.2.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/apache/maven/location-utils/1.1/location-utils-1.1.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/apache/maven/location-utils/1.1/location-utils-1.1.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/apache/maven/location-utils/1.2/location-utils-1.2.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/apache/maven/location-utils/1.2/location-utils-1.2.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/apache/maven/location-utils/1.2.1/location-utils-1.2.1.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/apache/maven/location-utils/1.2.1/location-utils-1.2.1.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() + "/com/carlspring/strongbox/foo/5.1/foo-5.1.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() + "/com/carlspring/strongbox/foo/5.1/foo-5.1.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() + "/com/carlspring/strongbox/foo/5.2/foo-5.2.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() + "/com/carlspring/strongbox/foo/5.2/foo-5.2.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() + "/com/carlspring/strongbox/foo/5.3/foo-5.3.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() + "/com/carlspring/strongbox/foo/5.3/foo-5.3.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.1/locator-testing-2.1.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.1/locator-testing-2.1.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.2/locator-testing-2.2.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.2/locator-testing-2.2.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.3/locator-testing-2.3.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.3/locator-testing-2.3.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.4/locator-testing-2.4.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.4/locator-testing-2.4.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.5/locator-testing-2.5.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/2.5/locator-testing-2.5.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/3.0/locator-testing-3.0.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/maven/locator-testing/3.0/locator-testing-3.0.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/5.2.1/locator-5.2.1.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/5.2.1/locator-5.2.1.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/5.2.2/locator-5.2.2.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/5.2.2/locator-5.2.2.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/strongbox/locator/foo-locator/1.0/foo-locator-1.0.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/strongbox/locator/foo-locator/1.0/foo-locator-1.0.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/strongbox/locator/foo-locator/1.1/foo-locator-1.1.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/strongbox/locator/foo-locator/1.1/foo-locator-1.1.pom");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/strongbox/locator/foo-locator/1.2/foo-locator-1.2.jar");
generateArtifact(REPOSITORY_BASEDIR.getAbsolutePath() +
"/org/carlspring/strongbox/locator/foo-locator/1.2/foo-locator-1.2.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/utils/2.1/utils-2.1.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/utils/2.1/utils-2.1.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/utils/2.2/utils-2.2.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/utils/2.2/utils-2.2.pom");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/utils/2.3/utils-2.3.jar");
generateArtifact(
REPOSITORY_BASEDIR.getAbsolutePath() + "/org/carlspring/strongbox/locator/utils/2.3/utils-2.3.pom");
if (!INITIALIZED)
{
tempSysOut = System.out;
INITIALIZED = true;
}
os = new ByteArrayOutputStream();
System.setOut(new PrintStream(os));
}
@After
public void tearDown()
throws Exception
{
resetOutput();
}
private void resetOutput()
{
os = null;
System.setOut(tempSysOut);
}
@Test
public void testLocateDirectories()
throws IOException
{
ArtifactDirectoryLocator locator = new ArtifactDirectoryLocator();
locator.setBasedir(REPOSITORY_BASEDIR.getAbsolutePath());
locator.setOperation(new ArtifactLocationReportOperation());
locator.locateArtifactDirectories();
os.flush();
String output = new String(os.toByteArray());
assertTrue(output.contains(normalize("org/apache/maven/location-utils")));
assertTrue(output.contains(normalize("org/carlspring/maven/locator-testing")));
assertTrue(output.contains(normalize("org/carlspring/strongbox/locator/foo-locator")));
assertTrue(output.contains(normalize("org/apache/maven/location-utils")));
assertTrue(output.contains(normalize("org/carlspring/strongbox/locator/utils")));
// resetOutput();
// System.out.println(output);
}
@Test
public void testLocateDirectoriesWithBasePath()
throws IOException
{
ArtifactDirectoryLocator locator = new ArtifactDirectoryLocator();
locator.setBasedir(REPOSITORY_BASEDIR.getAbsolutePath());
locator.setOperation(new ArtifactLocationReportOperation("org/carlspring"));
locator.locateArtifactDirectories();
os.flush();
String output = new String(os.toByteArray());
System.out.println(output);
assertFalse(output.contains(normalize("org/apache/maven/location-utils")));
assertTrue(output.contains(normalize("org/carlspring/maven/locator-testing")));
assertTrue(output.contains(normalize("org/carlspring/strongbox/locator/foo-locator")));
assertTrue(output.contains(normalize("org/carlspring/strongbox/locator/utils")));
resetOutput();
System.out.println(output);
}
private String normalize(String path)
{
if (!File.separator.equals("/"))
{
path = path.replaceAll("/", Matcher.quoteReplacement(System.getProperty("file.separator")));
}
return path;
}
}