From a3d69d047fc5f9d7830a31911f928a8c65cb8fb8 Mon Sep 17 00:00:00 2001 From: Chidera Olibie Date: Fri, 9 Dec 2022 15:46:38 +0000 Subject: [PATCH] Cronet: add test for handling post request This tests the API to setUploadDataProvider Test: atest CtsCronetTestCases Change-Id: Iceab323c58890eff7c847585b1f6de5fcd772e70 --- .../android/net/http/cts/UrlRequestTest.java | 30 +++++++++++++++---- .../android/net/http/cts/util/TestUtils.kt | 2 +- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Cronet/tests/cts/src/android/net/http/cts/UrlRequestTest.java b/Cronet/tests/cts/src/android/net/http/cts/UrlRequestTest.java index 54c1ee35fc..f96d65133c 100644 --- a/Cronet/tests/cts/src/android/net/http/cts/UrlRequestTest.java +++ b/Cronet/tests/cts/src/android/net/http/cts/UrlRequestTest.java @@ -21,6 +21,7 @@ import static android.net.http.cts.util.TestUtilsKt.skipIfNoInternetConnection; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import android.content.Context; @@ -30,6 +31,7 @@ import android.net.http.UrlRequest.Status; import android.net.http.UrlResponseInfo; import android.net.http.cts.util.HttpCtsTestServer; import android.net.http.cts.util.TestStatusListener; +import android.net.http.cts.util.TestUploadDataProvider; import android.net.http.cts.util.TestUrlRequestCallback; import android.net.http.cts.util.TestUrlRequestCallback.ResponseStep; @@ -67,14 +69,14 @@ public class UrlRequestTest { } } - private UrlRequest buildUrlRequest(String url) { - return mHttpEngine.newUrlRequestBuilder(url, mCallback, mCallback.getExecutor()).build(); + private UrlRequest.Builder createUrlRequestBuilder(String url) { + return mHttpEngine.newUrlRequestBuilder(url, mCallback, mCallback.getExecutor()); } @Test public void testUrlRequestGet_CompletesSuccessfully() throws Exception { String url = mTestServer.getSuccessUrl(); - UrlRequest request = buildUrlRequest(url); + UrlRequest request = createUrlRequestBuilder(url).build(); request.start(); mCallback.expectCallback(ResponseStep.ON_SUCCEEDED); @@ -85,7 +87,7 @@ public class UrlRequestTest { @Test public void testUrlRequestStatus_InvalidBeforeRequestStarts() throws Exception { - UrlRequest request = buildUrlRequest(mTestServer.getSuccessUrl()); + UrlRequest request = createUrlRequestBuilder(mTestServer.getSuccessUrl()).build(); // Calling before request is started should give Status.INVALID, // since the native adapter is not created. TestStatusListener statusListener = new TestStatusListener(); @@ -95,7 +97,7 @@ public class UrlRequestTest { @Test public void testUrlRequestCancel_CancelCalled() throws Exception { - UrlRequest request = buildUrlRequest(mTestServer.getSuccessUrl()); + UrlRequest request = createUrlRequestBuilder(mTestServer.getSuccessUrl()).build(); mCallback.setAutoAdvance(false); request.start(); @@ -105,4 +107,22 @@ public class UrlRequestTest { request.cancel(); mCallback.expectCallback(ResponseStep.ON_CANCELED); } + + @Test + public void testUrlRequestPost_EchoRequestBody() throws Exception { + String testData = "test"; + UrlRequest.Builder builder = createUrlRequestBuilder(mTestServer.getEchoBodyUrl()); + + TestUploadDataProvider dataProvider = new TestUploadDataProvider( + TestUploadDataProvider.SuccessCallbackMode.SYNC, mCallback.getExecutor()); + dataProvider.addRead(testData.getBytes()); + builder.setUploadDataProvider(dataProvider, mCallback.getExecutor()); + builder.addHeader("Content-Type", "text/html"); + builder.build().start(); + mCallback.expectCallback(ResponseStep.ON_SUCCEEDED); + + assertOKStatusCode(mCallback.mResponseInfo); + assertEquals(testData, mCallback.mResponseAsString); + dataProvider.assertClosed(); + } } diff --git a/Cronet/tests/cts/src/android/net/http/cts/util/TestUtils.kt b/Cronet/tests/cts/src/android/net/http/cts/util/TestUtils.kt index d30c05940d..09ddaf9186 100644 --- a/Cronet/tests/cts/src/android/net/http/cts/util/TestUtils.kt +++ b/Cronet/tests/cts/src/android/net/http/cts/util/TestUtils.kt @@ -29,5 +29,5 @@ fun skipIfNoInternetConnection(context: Context) { } fun assertOKStatusCode(info: UrlResponseInfo) { - assertEquals("Status code must be 200 OK", 200, info.getHttpStatusCode()) + assertEquals("Status code must be 200 OK", 200, info.httpStatusCode) }