mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Use OkHttp3 for NetworkingModuleTest (#48012)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/48012 Match the OkHttp version we use for NetworkingModule and FrescoModule, to unblock pulling in D66498305 Changelog: [Internal] Reviewed By: cortinico Differential Revision: D66595222 fbshipit-source-id: 1c29b061866be5d8bcc87aaa0c8a1de846198e4e
This commit is contained in:
committed by
Facebook GitHub Bot
parent
8babc21b79
commit
351b1bae95
+35
-39
@@ -5,14 +5,12 @@
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
// TODO T207169925: Migrate CatalystInstance to Reacthost and remove the Suppress("DEPRECATION")
|
||||
// annotation
|
||||
@file:Suppress("DEPRECATION")
|
||||
// Conflicting okhttp versions
|
||||
@file:Suppress("DEPRECATION_ERROR")
|
||||
|
||||
package com.facebook.react.modules.network
|
||||
|
||||
import com.facebook.react.bridge.Arguments
|
||||
import com.facebook.react.bridge.CatalystInstance
|
||||
import com.facebook.react.bridge.JavaOnlyArray
|
||||
import com.facebook.react.bridge.JavaOnlyMap
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
@@ -25,9 +23,7 @@ import java.nio.charset.StandardCharsets
|
||||
import okhttp3.Call
|
||||
import okhttp3.Headers
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||
import okhttp3.MultipartBody
|
||||
import okhttp3.MultipartBody.Companion.FORM
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody
|
||||
@@ -56,6 +52,8 @@ import org.robolectric.RobolectricTestRunner
|
||||
*/
|
||||
private fun <T> anyOrNull(type: Class<T>): T = any(type)
|
||||
|
||||
private val FORM = MediaType.get("multipart/form-data")
|
||||
|
||||
/**
|
||||
* Returns ArgumentCaptor.capture() as nullable type to avoid java.lang.IllegalStateException when
|
||||
* null is returned.
|
||||
@@ -75,7 +73,7 @@ class NetworkingModuleTest {
|
||||
@Before
|
||||
fun prepareModules() {
|
||||
httpClient = mock(OkHttpClient::class.java)
|
||||
whenever(httpClient.cookieJar).thenReturn(mock(CookieJarContainer::class.java))
|
||||
whenever(httpClient.cookieJar()).thenReturn(mock(CookieJarContainer::class.java))
|
||||
whenever(httpClient.newCall(anyOrNull(Request::class.java))).thenAnswer {
|
||||
val callMock = mock(Call::class.java)
|
||||
callMock
|
||||
@@ -85,10 +83,7 @@ class NetworkingModuleTest {
|
||||
whenever(clientBuilder.build()).thenReturn(httpClient)
|
||||
whenever(httpClient.newBuilder()).thenReturn(clientBuilder)
|
||||
|
||||
val reactInstance = mock(CatalystInstance::class.java)
|
||||
|
||||
context = mock(ReactApplicationContext::class.java)
|
||||
whenever(context.catalystInstance).thenReturn(reactInstance)
|
||||
whenever(context.hasActiveReactInstance()).thenReturn(true)
|
||||
|
||||
networkingModule = NetworkingModule(context, "", httpClient)
|
||||
@@ -138,10 +133,10 @@ class NetworkingModuleTest {
|
||||
false /* withCredentials */)
|
||||
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
assertThat(requestArgumentCaptor.value.url.toString()).isEqualTo("http://somedomain/foo")
|
||||
assertThat(requestArgumentCaptor.value.url().toString()).isEqualTo("http://somedomain/foo")
|
||||
// We set the User-Agent header by default
|
||||
assertThat(requestArgumentCaptor.value.headers.size).isEqualTo(1)
|
||||
assertThat(requestArgumentCaptor.value.method).isEqualTo("GET")
|
||||
assertThat(requestArgumentCaptor.value.headers().size()).isEqualTo(1)
|
||||
assertThat(requestArgumentCaptor.value.method()).isEqualTo("GET")
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -223,13 +218,13 @@ class NetworkingModuleTest {
|
||||
false /* withCredentials */)
|
||||
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
assertThat(requestArgumentCaptor.value.url.toString()).isEqualTo("http://somedomain/bar")
|
||||
assertThat(requestArgumentCaptor.value.headers.size).isEqualTo(2)
|
||||
assertThat(requestArgumentCaptor.value.method).isEqualTo("POST")
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType()!!.type).isEqualTo("text")
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType()!!.subtype).isEqualTo("plain")
|
||||
assertThat(requestArgumentCaptor.value.url().toString()).isEqualTo("http://somedomain/bar")
|
||||
assertThat(requestArgumentCaptor.value.headers().size()).isEqualTo(2)
|
||||
assertThat(requestArgumentCaptor.value.method()).isEqualTo("POST")
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType()?.type()).isEqualTo("text")
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType()?.subtype()).isEqualTo("plain")
|
||||
val contentBuffer = Buffer()
|
||||
requestArgumentCaptor.value.body!!.writeTo(contentBuffer)
|
||||
requestArgumentCaptor.value.body()?.writeTo(contentBuffer)
|
||||
assertThat(contentBuffer.readUtf8()).isEqualTo("This is request body")
|
||||
}
|
||||
|
||||
@@ -252,8 +247,8 @@ class NetworkingModuleTest {
|
||||
false /* withCredentials */)
|
||||
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
val requestHeaders = requestArgumentCaptor.value.headers
|
||||
assertThat(requestHeaders.size).isEqualTo(2)
|
||||
val requestHeaders = requestArgumentCaptor.value.headers()
|
||||
assertThat(requestHeaders.size()).isEqualTo(2)
|
||||
assertThat(requestHeaders["Accept"]).isEqualTo("text/plain")
|
||||
assertThat(requestHeaders["User-Agent"]).isEqualTo("React test agent/1.0")
|
||||
}
|
||||
@@ -277,7 +272,7 @@ class NetworkingModuleTest {
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
|
||||
// Verify okhttp does not append "charset=utf-8"
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType().toString())
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType().toString())
|
||||
.isEqualTo("application/json")
|
||||
}
|
||||
|
||||
@@ -302,7 +297,7 @@ class NetworkingModuleTest {
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
|
||||
val contentBuffer = Buffer()
|
||||
requestArgumentCaptor.value.body!!.writeTo(contentBuffer)
|
||||
requestArgumentCaptor.value.body()?.writeTo(contentBuffer)
|
||||
assertThat(contentBuffer.readString(StandardCharsets.UTF_16)).isEqualTo(testString)
|
||||
}
|
||||
|
||||
@@ -325,7 +320,7 @@ class NetworkingModuleTest {
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
|
||||
val contentBuffer = Buffer()
|
||||
requestArgumentCaptor.value.body!!.writeTo(contentBuffer)
|
||||
requestArgumentCaptor.value.body()?.writeTo(contentBuffer)
|
||||
|
||||
assertThat(contentBuffer.readString(StandardCharsets.UTF_8)).isEqualTo("test")
|
||||
assertThat(requestArgumentCaptor.value.header("Content-Type")).isEqualTo("invalid")
|
||||
@@ -355,12 +350,13 @@ class NetworkingModuleTest {
|
||||
|
||||
// verify url, method, headers
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
assertThat(requestArgumentCaptor.value.url.toString()).isEqualTo("http://someurl/uploadFoo")
|
||||
assertThat(requestArgumentCaptor.value.method).isEqualTo("POST")
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType()!!.type).isEqualTo(FORM.type)
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType()!!.subtype).isEqualTo(FORM.subtype)
|
||||
val requestHeaders = requestArgumentCaptor.value.headers
|
||||
assertThat(requestHeaders.size).isEqualTo(1)
|
||||
assertThat(requestArgumentCaptor.value.url().toString()).isEqualTo("http://someurl/uploadFoo")
|
||||
assertThat(requestArgumentCaptor.value.method()).isEqualTo("POST")
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType()?.type()).isEqualTo(FORM.type())
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType()?.subtype())
|
||||
.isEqualTo(FORM.subtype())
|
||||
val requestHeaders = requestArgumentCaptor.value.headers()
|
||||
assertThat(requestHeaders.size()).isEqualTo(1)
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -393,12 +389,13 @@ class NetworkingModuleTest {
|
||||
|
||||
// verify url, method, headers
|
||||
verify(httpClient).newCall(capture(requestArgumentCaptor))
|
||||
assertThat(requestArgumentCaptor.value.url.toString()).isEqualTo("http://someurl/uploadFoo")
|
||||
assertThat(requestArgumentCaptor.value.method).isEqualTo("POST")
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType()!!.type).isEqualTo(FORM.type)
|
||||
assertThat(requestArgumentCaptor.value.body!!.contentType()!!.subtype).isEqualTo(FORM.subtype)
|
||||
val requestHeaders = requestArgumentCaptor.value.headers
|
||||
assertThat(requestHeaders.size).isEqualTo(3)
|
||||
assertThat(requestArgumentCaptor.value.url().toString()).isEqualTo("http://someurl/uploadFoo")
|
||||
assertThat(requestArgumentCaptor.value.method()).isEqualTo("POST")
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType()?.type()).isEqualTo(FORM.type())
|
||||
assertThat(requestArgumentCaptor.value.body()?.contentType()?.subtype())
|
||||
.isEqualTo(FORM.subtype())
|
||||
val requestHeaders = requestArgumentCaptor.value.headers()
|
||||
assertThat(requestHeaders.size()).isEqualTo(3)
|
||||
assertThat(requestHeaders["Accept"]).isEqualTo("text/plain")
|
||||
assertThat(requestHeaders["User-Agent"]).isEqualTo("React test agent/1.0")
|
||||
assertThat(requestHeaders["content-type"]).isEqualTo("multipart/form-data")
|
||||
@@ -466,7 +463,7 @@ class NetworkingModuleTest {
|
||||
RequestBodyUtil.getFileInputStream(any(ReactContext::class.java), eq("imageUri"))
|
||||
// TODO This should be migrated to requestBodyUtil.verify();
|
||||
// PowerMockito.verifyStatic(RequestBodyUtil.class, times(1));
|
||||
RequestBodyUtil.create("image/jpg".toMediaTypeOrNull(), inputStream)
|
||||
RequestBodyUtil.create(MediaType.parse("image/jpg"), inputStream)
|
||||
|
||||
// verify body
|
||||
// TODO fix it (now mock is not called)
|
||||
@@ -488,8 +485,7 @@ class NetworkingModuleTest {
|
||||
assertThat(bodyRequestBody[0].contentLength()).isEqualTo("locale".toByteArray().size.toLong())
|
||||
assertThat(bodyHeaders[1]["content-disposition"])
|
||||
.isEqualTo("filename=\"测试photo.jpg\"; filename*=utf-8''%E6%B5%8B%E8%AF%95photo.jpg")
|
||||
assertThat<MediaType?>(bodyRequestBody[1].contentType())
|
||||
.isEqualTo("image/jpg".toMediaTypeOrNull())
|
||||
assertThat<MediaType?>(bodyRequestBody[1].contentType()).isEqualTo(MediaType.parse("image/jpg"))
|
||||
assertThat(bodyRequestBody[1].contentLength()).isEqualTo("imageUri".toByteArray().size.toLong())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user