package com.bumptech.glide.load.model.stream; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import android.net.Uri; import com.bumptech.glide.load.Options; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.ModelLoader; import java.io.InputStream; import java.net.MalformedURLException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE, sdk = 18) public class HttpUriLoaderTest { private static final int IMAGE_SIDE = 100; private static final Options OPTIONS = new Options(); @Mock ModelLoader<GlideUrl, InputStream> urlLoader; private HttpUriLoader loader; @Before public void setUp() { MockitoAnnotations.initMocks(this); loader = new HttpUriLoader(urlLoader); } @Test public void testHandlesHttpUris() throws MalformedURLException { Uri httpUri = Uri.parse("http://www.google.com"); loader.buildLoadData(httpUri, IMAGE_SIDE, IMAGE_SIDE, OPTIONS); assertTrue(loader.handles(httpUri)); verify(urlLoader) .buildLoadData(eq(new GlideUrl(httpUri.toString())), eq(IMAGE_SIDE), eq(IMAGE_SIDE), eq(OPTIONS)); } @Test public void testHandlesHttpsUris() throws MalformedURLException { Uri httpsUri = Uri.parse("https://www.google.com"); loader.buildLoadData(httpsUri, IMAGE_SIDE, IMAGE_SIDE, OPTIONS); assertTrue(loader.handles(httpsUri)); verify(urlLoader) .buildLoadData(eq(new GlideUrl(httpsUri.toString())), eq(IMAGE_SIDE), eq(IMAGE_SIDE), eq(OPTIONS)); } // Test for https://github.com/bumptech/glide/issues/71. @Test public void testHandlesMostlyInvalidHttpUris() { Uri mostlyInvalidHttpUri = Uri.parse( "http://myserver_url.com:80http://myserver_url.com/webapp/images/no_image.png?size=100"); assertTrue(loader.handles(mostlyInvalidHttpUri)); loader.buildLoadData(mostlyInvalidHttpUri, IMAGE_SIDE, IMAGE_SIDE, OPTIONS); verify(urlLoader) .buildLoadData(eq(new GlideUrl(mostlyInvalidHttpUri.toString())), eq(IMAGE_SIDE), eq(IMAGE_SIDE), eq(OPTIONS)); } }