diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.kt index cadc66401d0..1dc90c0b122 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/modules/network/NetworkingModuleTest.kt @@ -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 anyOrNull(type: Class): 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(bodyRequestBody[1].contentType()) - .isEqualTo("image/jpg".toMediaTypeOrNull()) + assertThat(bodyRequestBody[1].contentType()).isEqualTo(MediaType.parse("image/jpg")) assertThat(bodyRequestBody[1].contentLength()).isEqualTo("imageUri".toByteArray().size.toLong()) }