diff --git a/constants.gradle b/constants.gradle index 9f753ec3cd..e4f9a7f61d 100644 --- a/constants.gradle +++ b/constants.gradle @@ -23,6 +23,7 @@ project.ext { junitVersion = '4.13-rc-2' guavaVersion = '27.1-android' mockitoVersion = '2.25.0' + mockWebServerVersion = '3.12.0' robolectricVersion = '4.4-SNAPSHOT' checkerframeworkVersion = '2.5.0' jsr305Version = '3.0.2' diff --git a/library/core/build.gradle b/library/core/build.gradle index 70a2a92b2c..6ce6dac707 100644 --- a/library/core/build.gradle +++ b/library/core/build.gradle @@ -66,6 +66,7 @@ dependencies { exclude module: modulePrefix.substring(1) + 'library-core' } testImplementation 'com.google.guava:guava:' + guavaVersion + testImplementation 'com.squareup.okhttp3:mockwebserver:' + mockWebServerVersion testImplementation 'org.robolectric:robolectric:' + robolectricVersion testImplementation project(modulePrefix + 'testutils') } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSourceTest.java b/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSourceTest.java index ce11bf3172..8d5a7479e5 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSourceTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/upstream/DefaultHttpDataSourceTest.java @@ -17,23 +17,19 @@ package com.google.android.exoplayer2.upstream; 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.ArgumentMatchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.when; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.testutil.TestUtil; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Map; +import okhttp3.Headers; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okio.Buffer; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.ArgumentMatchers; -import org.mockito.Mockito; /** Unit tests for {@link DefaultHttpDataSource}. */ @RunWith(AndroidJUnit4.class) @@ -45,86 +41,84 @@ public class DefaultHttpDataSourceTest { * table 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 | | | |
- * | DefaultHttpDataSource | | *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_withSpecifiedRequestParameters_usesCorrectParameters() throws IOException {
- String defaultParameter = "Default";
- String dataSourceInstanceParameter = "DefaultHttpDataSource";
- String dataSpecParameter = "Dataspec";
+ public void open_withSpecifiedRequestParameters_usesCorrectParameters() throws Exception {
+ MockWebServer mockWebServer = new MockWebServer();
+ mockWebServer.enqueue(new MockResponse());
- HttpDataSource.RequestProperties defaultParameters = new HttpDataSource.RequestProperties();
- defaultParameters.set("0", defaultParameter);
- defaultParameters.set("1", defaultParameter);
- defaultParameters.set("2", defaultParameter);
+ 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);
+ DefaultHttpDataSource dataSource =
+ new DefaultHttpDataSource(
+ /* userAgent= */ "testAgent",
+ /* connectTimeoutMillis= */ 1000,
+ /* readTimeoutMillis= */ 1000,
+ /* allowCrossProtocolRedirects= */ false,
+ constructorProperties);
- DefaultHttpDataSource defaultHttpDataSource =
- Mockito.spy(
- new DefaultHttpDataSource(
- /* userAgent= */ "testAgent",
- /* connectTimeoutMillis= */ 1000,
- /* readTimeoutMillis= */ 1000,
- /* allowCrossProtocolRedirects= */ false,
- defaultParameters));
-
- Map