package aQute.bnd.deployer.repository.aether;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedSet;
import aQute.bnd.service.RepositoryPlugin;
import aQute.bnd.service.RepositoryPlugin.DownloadListener;
import aQute.bnd.version.Version;
import aQute.lib.io.IO;
import junit.framework.TestCase;
import test.lib.NanoHTTPD;
@SuppressWarnings("restriction")
public class AetherRepsitoryTests extends TestCase {
private static NanoHTTPD httpd;
private static int httpdPort;
private static DownloadListener listener = new DownloadListener() {
@Override
public void failure(File file, String reason) throws Exception {}
@Override
public boolean progress(File file, int percentage)
throws Exception {
return true;
}
@Override
public void success(File file) throws Exception {}
};
private AetherRepository createRepo() throws Exception {
AetherRepository repo = new AetherRepository();
Map<String,String> props = new HashMap<String,String>();
props.put(AetherRepository.PROP_MAIN_URL, "http://127.0.0.1:" + httpdPort);
repo.setProperties(props);
return repo;
}
@Override
protected void setUp() throws Exception {
httpd = new NanoHTTPD(0, IO.getFile("testdata/repo"));
httpdPort = httpd.getPort();
}
@Override
protected void tearDown() throws Exception {
httpd.stop();
}
public void testVersionsBadBsn() throws Exception {
RepositoryPlugin repo = createRepo();
SortedSet<Version> versions = repo.versions("foo.bar.foobar");
assertNull(versions);
}
public void testVersionsGAVStyle() throws Exception {
RepositoryPlugin repo = createRepo();
SortedSet<Version> versions = repo.versions("javax.servlet:servlet-api");
assertNotNull(versions);
assertTrue(versions.size() == 2);
assertEquals("2.4.0", versions.first().toString());
assertEquals("2.5.0", versions.last().toString());
}
public void testStrategyExactVersion() throws Exception {
RepositoryPlugin repo = createRepo();
Map<String,String> attrs = new HashMap<String,String>();
attrs.put("version", "2.5");
attrs.put("strategy", "exact");
File file = repo.get("javax.servlet:servlet-api", new Version(2, 5, 0), attrs, listener);
assertNotNull(file);
assertEquals("servlet-api-2.5.jar", file.getName());
}
public void testStrategyExactVersionBadGAV() throws Exception {
RepositoryPlugin repo = createRepo();
Map<String,String> attrs = new HashMap<String,String>();
attrs.put("version", "1.0");
attrs.put("strategy", "exact");
File file = repo.get("foo.bar:foobar-api", new Version(1, 0, 0), attrs, listener);
assertNull(file);
}
public void testSourceLookup() throws Exception {
RepositoryPlugin repo = createRepo();
Map<String,String> attrs = new HashMap<String,String>();
attrs.put("version", "2.5");
attrs.put("bsn", "javax.servlet:servlet-api");
File file = repo.get("servlet-api.source", new Version(2, 5, 0), attrs, listener);
assertTrue(file.exists());
assertEquals("servlet-api-2.5-sources.jar", file.getName());
}
}