package aQute.bnd.repository.maven.provider;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import aQute.bnd.http.HttpClient;
import aQute.bnd.osgi.Processor;
import aQute.bnd.service.RepositoryPlugin.PutOptions;
import aQute.bnd.service.RepositoryPlugin.PutResult;
import aQute.bnd.url.BasicAuthentication;
import aQute.bnd.version.Version;
import aQute.http.testservers.HttpTestServer;
import aQute.http.testservers.HttpTestServer.Config;
import aQute.lib.io.IO;
import junit.framework.TestCase;
public class AgainstNexusTest extends TestCase {
private static final String HTTP_LOCALHOST_8081 = "http://localhost:8081/nexus/content/repositories/snapshots/";
String tmpName;
File tmp;
File local;
File remote;
File index;
boolean skip = false;
private MavenBndRepository repo;
@Override
protected void setUp() throws Exception {
super.setUp();
tmpName = "generated/tmp/test/" + getName();
tmp = IO.getFile(tmpName);
IO.delete(tmp);
local = IO.getFile(tmp, "local");
remote = IO.getFile(tmp, "remote");
index = IO.getFile(tmp, "index");
local.mkdirs();
IO.copy(IO.getFile("testresources/nexus/index.maven"), index);
Config config = new HttpTestServer.Config();
try {
new URL(HTTP_LOCALHOST_8081).openStream();
skip = false;
} catch (FileNotFoundException e) {
skip = false;
} catch (Exception e) {
skip = true;
}
skip = true;
}
public void testBasic() throws Exception {
if (skip)
return;
config(null);
assertEquals("[group:artifact]", repo.list(null).toString());
assertEquals("[1.0.0.SNAPSHOT]", repo.versions("group:artifact").toString());
File f = repo.get("group:artifact", new Version("1.0.0.SNAPSHOT"), null);
assertEquals(1497, f.length());
System.out.println(f);
}
public void testRelease() throws Exception {
if (skip)
return;
config(null);
File r = IO.getFile("testresources/release.jar");
File s = IO.getFile("testresources/snapshot.jar");
PutOptions p = new PutOptions();
p.context = new Processor();
p.context.setProperty("-maven-release", "remote");
PutResult put = repo.put(new FileInputStream(s), p);
}
void config(Map<String,String> config) throws Exception {
if (config == null)
config = new HashMap<>();
config.put("local", tmpName + "/local");
config.put("index", tmpName + "/index");
config.put("releaseUrl", HTTP_LOCALHOST_8081);
Processor reporter = new Processor();
HttpClient client = new HttpClient();
BasicAuthentication ba = new BasicAuthentication("admin", "admin123", reporter);
client.addURLConnectionHandler(ba);
Executor executor = Executors.newCachedThreadPool();
reporter.addBasicPlugin(client);
reporter.setTrace(true);
repo = new MavenBndRepository();
repo.setReporter(reporter);
repo.setRegistry(reporter);
repo.setProperties(config);
}
}