package de.saumya.mojo.mavengem; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.Map; import java.util.HashMap; import java.net.URL; import java.net.URLConnection; import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.endsWith; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.startsWith; public class RubygemsFactoryTest { @Test public void defaultsOnDefaultFactory() throws Exception { RubygemsFactory.factory = null; System.getProperties().remove("mavengem.cachedir"); System.getProperties().remove("mavengem.mirror"); RubygemsFactory factory = RubygemsFactory.defaultFactory(); assertThat(factory.mirrors, nullValue()); assertThat(factory.catchAllMirror, is(RubygemsFactory.NO_MIRROR)); assertThat(factory.cacheDir.getName(), is(".mavengem")); } @Test public void defaultFactory() throws Exception { System.setProperty("mavengem.cachedir", "some/thing"); System.setProperty("mavengem.mirror", "https://example.org"); RubygemsFactory.factory = null; RubygemsFactory factory = RubygemsFactory.defaultFactory(); assertThat(factory.mirrors, nullValue()); assertThat(factory.catchAllMirror, is(new URL("https://example.org"))); assertThat(factory.cacheDir, is(new File("some/thing"))); } @Test public void defaultsOnInstance() throws Exception { RubygemsFactory factory = new RubygemsFactory(); assertThat(factory.mirrors, nullValue()); assertThat(factory.catchAllMirror, is(RubygemsFactory.NO_MIRROR)); assertThat(factory.cacheDir.getName(), is(".mavengem")); } @Test public void cachedir() throws Exception { RubygemsFactory factory = new RubygemsFactory(new File("some/thing")); assertThat(factory.mirrors, nullValue()); assertThat(factory.catchAllMirror, is(RubygemsFactory.NO_MIRROR)); assertThat(factory.cacheDir, is(new File("some/thing"))); } @Test public void mirror() throws Exception { RubygemsFactory factory = new RubygemsFactory(new URL("https://example.org")); assertThat(factory.mirrors, nullValue()); assertThat(factory.catchAllMirror, is(new URL("https://example.org"))); assertThat(factory.cacheDir.getName(), is(".mavengem")); } @Test public void mirrors() throws Exception { Map<URL,URL> mirrors = new HashMap<URL,URL>(); RubygemsFactory factory = new RubygemsFactory(mirrors); assertThat(factory.mirrors, is(mirrors)); assertThat(factory.catchAllMirror, is(RubygemsFactory.NO_MIRROR)); assertThat(factory.cacheDir.getName(), is(".mavengem")); } @Test public void cachedirAndMirror() throws Exception { RubygemsFactory factory = new RubygemsFactory(new File("some/thing"), new URL("https://example.org")); assertThat(factory.mirrors, nullValue()); assertThat(factory.catchAllMirror, is(new URL("https://example.org"))); assertThat(factory.cacheDir, is(new File("some/thing"))); } @Test public void cachedirAndMirrors() throws Exception { Map<URL,URL> mirrors = new HashMap<URL,URL>(); RubygemsFactory factory = new RubygemsFactory(new File("some/thing"), mirrors); assertThat(factory.mirrors, is(mirrors)); assertThat(factory.catchAllMirror, is(RubygemsFactory.NO_MIRROR)); assertThat(factory.cacheDir, is(new File("some/thing"))); } @Test(expected = IllegalArgumentException.class) public void cachedirAndMirrorsPrecondition() throws Exception { Map<URL,URL> mirrors = new HashMap<URL,URL>(); RubygemsFactory factory = new RubygemsFactory(null, mirrors); } @Test(expected = IllegalArgumentException.class) public void cachedirPrecondition() throws Exception { RubygemsFactory factory = new RubygemsFactory((File)null); } @Test(expected = IllegalArgumentException.class) public void mirrorPrecondition() throws Exception { RubygemsFactory factory = new RubygemsFactory((URL)null); } @Test(expected = IllegalArgumentException.class) public void cachedirAndMirrorPreconditionFile() throws Exception { RubygemsFactory factory = new RubygemsFactory((File)null, new URL("https://example.com")); } @Test(expected = IllegalArgumentException.class) public void cachedirAndMirrorPreconditionURL() throws Exception { RubygemsFactory factory = new RubygemsFactory(new File("some/thing"), (URL)null); } }