package ro.isdc.wro.extensions.locator;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import ro.isdc.wro.config.Context;
import ro.isdc.wro.model.resource.locator.UriLocator;
/**
* @author Alex Objelean
*/
public class TestWebjarUriLocator {
private UriLocator victim;
@BeforeClass
public static void onBeforeClass() {
assertEquals(0, Context.countActive());
}
@AfterClass
public static void onAfterClass() {
assertEquals(0, Context.countActive());
}
@Before
public void setUp() {
victim = new WebjarUriLocator();
}
@Test
public void shouldCreateValidUri() {
assertEquals("webjar:/path/to/resource.js", WebjarUriLocator.createUri("/path/to/resource.js"));
}
@Test(expected = NullPointerException.class)
public void cannotCreateValidUriFromNullArgument() {
WebjarUriLocator.createUri(null);
}
@Test
public void shouldAcceptKnownUri() {
assertTrue(victim.accept(WebjarUriLocator.createUri("/path/to/resource.js")));
}
@Test
public void shouldNotAcceptUnknown() {
assertFalse(victim.accept("http://www.server.com/path/to/resource.js"));
}
@Test
public void shouldFindValidWebjar()
throws Exception {
assertNotEmpty(victim.locate("webjar:jquery.js"));
assertNotEmpty(victim.locate("webjar:jquery/2.0.0/jquery.js"));
assertNotEmpty(victim.locate("webjar:/jquery/2.0.0/jquery.js"));
}
@Test(expected = IOException.class)
public void cannotFindInvalidWebjar()
throws Exception {
victim.locate("webjar:invalid.js");
}
@Test
public void shouldNotFailWhenThereIsAWebjarResourceOutsideOfJar()
throws IOException {
assertNotEmpty(victim.locate("webjar:webjarFail.js"));
}
private void assertNotEmpty(final InputStream stream)
throws IOException {
IOUtils.read(stream, new byte[] {});
stream.close();
}
@Test
public void shouldLocateWebjarResourceContainingQuestionMarkInUri()
throws Exception {
victim.locate("webjar:font-awesome/4.0.3/fonts/fontawesome-webfont.woff?v=4.0.3");
}
}