diff --git a/extensions/okhttp/build.gradle b/extensions/okhttp/build.gradle index 220522b9d9..a44e62e0e5 100644 --- a/extensions/okhttp/build.gradle +++ b/extensions/okhttp/build.gradle @@ -37,6 +37,7 @@ dependencies { compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion compileOnly 'org.jetbrains.kotlin:kotlin-annotations-jvm:' + kotlinAnnotationsVersion testImplementation project(modulePrefix + 'testutils') + testImplementation 'com.squareup.okhttp3:mockwebserver:' + mockWebServerVersion testImplementation 'org.robolectric:robolectric:' + robolectricVersion // Do not update to 3.13.X or later until minSdkVersion is increased to 21: // https://cashapp.github.io/2019-02-05/okhttp-3-13-requires-android-5 diff --git a/extensions/okhttp/src/test/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSourceTest.java b/extensions/okhttp/src/test/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSourceTest.java index d39e836869..73e9909a8d 100644 --- a/extensions/okhttp/src/test/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSourceTest.java +++ b/extensions/okhttp/src/test/java/com/google/android/exoplayer2/ext/okhttp/OkHttpDataSourceTest.java @@ -17,28 +17,21 @@ package com.google.android.exoplayer2.ext.okhttp; import static com.google.common.truth.Truth.assertThat; +import static java.util.concurrent.TimeUnit.SECONDS; import static org.junit.Assert.assertThrows; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import androidx.test.ext.junit.runners.AndroidJUnit4; -import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.HttpDataSource; -import java.io.IOException; +import com.google.common.base.Charsets; import java.util.HashMap; import java.util.Map; -import okhttp3.Call; -import okhttp3.MediaType; -import okhttp3.Protocol; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; +import okhttp3.Headers; +import okhttp3.OkHttpClient; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.ArgumentMatchers; -import org.mockito.Mockito; /** Unit tests for {@link OkHttpDataSource}. */ @RunWith(AndroidJUnit4.class) @@ -50,114 +43,76 @@ public class OkHttpDataSourceTest { * below. Values wrapped in '*' are the ones that should be set in the connection request. * *
{@code
- * +-----------------------+---+-----+-----+-----+-----+-----+
- * | | Header Key |
- * +-----------------------+---+-----+-----+-----+-----+-----+
- * | Location | 0 | 1 | 2 | 3 | 4 | 5 |
- * +-----------------------+---+-----+-----+-----+-----+-----+
- * | Default |*Y*| Y | Y | | | |
- * | OkHttpDataSource | | *Y* | Y | Y | *Y* | |
- * | DataSpec | | | *Y* | *Y* | | *Y* |
- * +-----------------------+---+-----+-----+-----+-----+-----+
+ * +---------------+-----+-----+-----+-----+-----+-----+-----+
+ * | | Header Key |
+ * +---------------+-----+-----+-----+-----+-----+-----+-----+
+ * | Location | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
+ * +---------------+-----+-----+-----+-----+-----+-----+-----+
+ * | Constructor | *Y* | Y | Y | | Y | | |
+ * | Setter | | *Y* | Y | Y | | *Y* | |
+ * | DataSpec | | | *Y* | *Y* | *Y* | | *Y* |
+ * +---------------+-----+-----+-----+-----+-----+-----+-----+
* }
*/
@Test
- public void open_setsCorrectHeaders() throws HttpDataSource.HttpDataSourceException {
- String defaultValue = "Default";
- String okHttpDataSourceValue = "OkHttpDataSource";
- String dataSpecValue = "DataSpec";
+ public void open_setsCorrectHeaders() throws Exception {
+ MockWebServer mockWebServer = new MockWebServer();
+ mockWebServer.enqueue(new MockResponse());
- // 1. Default properties on OkHttpDataSource
- HttpDataSource.RequestProperties defaultRequestProperties =
- new HttpDataSource.RequestProperties();
- defaultRequestProperties.set("0", defaultValue);
- defaultRequestProperties.set("1", defaultValue);
- defaultRequestProperties.set("2", defaultValue);
-
- Call.Factory mockCallFactory = mock(Call.Factory.class);
- OkHttpDataSource okHttpDataSource =
+ String propertyFromConstructor = "fromConstructor";
+ HttpDataSource.RequestProperties constructorProperties = new HttpDataSource.RequestProperties();
+ constructorProperties.set("0", propertyFromConstructor);
+ constructorProperties.set("1", propertyFromConstructor);
+ constructorProperties.set("2", propertyFromConstructor);
+ constructorProperties.set("4", propertyFromConstructor);
+ OkHttpDataSource dataSource =
new OkHttpDataSource(
- mockCallFactory, "testAgent", /* cacheControl= */ null, defaultRequestProperties);
+ new OkHttpClient(), "testAgent", /* cacheControl= */ null, constructorProperties);
- // 2. Additional properties set with setRequestProperty().
- okHttpDataSource.setRequestProperty("1", okHttpDataSourceValue);
- okHttpDataSource.setRequestProperty("2", okHttpDataSourceValue);
- okHttpDataSource.setRequestProperty("3", okHttpDataSourceValue);
- okHttpDataSource.setRequestProperty("4", okHttpDataSourceValue);
+ String propertyFromSetter = "fromSetter";
+ dataSource.setRequestProperty("1", propertyFromSetter);
+ dataSource.setRequestProperty("2", propertyFromSetter);
+ dataSource.setRequestProperty("3", propertyFromSetter);
+ dataSource.setRequestProperty("5", propertyFromSetter);
- // 3. DataSpec properties
+ String propertyFromDataSpec = "fromDataSpec";
Map