package net.rdrei.android.scdl2.test; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; import net.rdrei.android.scdl2.api.APIException; import net.rdrei.android.scdl2.api.ServiceManager; import net.rdrei.android.scdl2.api.URLConnectionFactory; import net.rdrei.android.scdl2.api.service.DownloadService; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.thoughtcrime.ssl.pinning.PinningTrustManager; import android.net.Uri; import com.google.inject.AbstractModule; import com.google.inject.Inject; @RunWith(RobolectricTestRunner.class) public class DownloadServiceTest { @Inject private ServiceManager mServiceManager; private FakeURLConnectionFactoryImpl mUrlConnectionFactory; private static final String DOWNLOAD_URL = "http://ak-media.soundcloud.com/9OQ63FqBTMAA?AWSAccessKeyId=AKIAJBHW5FB4ERKUQUOQ&Expires=1335895042&Signature=XJ8NOIJXKf09iEOC4sc5SU7OmBM%3D&__gda__=1335895042_b26bb4a83dd728ef4d883e107d69be1ca"; @Before public void setUp() { final AbstractModule module = new AbstractModule() { @Override protected void configure() { mUrlConnectionFactory = new FakeURLConnectionFactoryImpl(); mUrlConnectionFactory.setResponseCode(302); mUrlConnectionFactory.setHeaderField("Location", DOWNLOAD_URL); bind(URLConnectionFactory.class).toInstance( mUrlConnectionFactory); bind(PinningTrustManager.class).toInstance( new TrustManagerStub()); } }; TestHelper.overridenInjector(this, module); } @Test public void testShouldCreateService() { final DownloadService service = mServiceManager.downloadService(); assertThat(service, notNullValue()); } @Test public void testDownloadResolver() throws APIException { final DownloadService service = mServiceManager.downloadService(); Uri uri = service.resolveUri("44276907"); assertThat(uri.toString(), equalTo(DOWNLOAD_URL)); } }