blob: 19ec8228eca24b3bf665518d2c5ff0e30d562476 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.cronet_test_apk;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.test.util.Feature;
import org.chromium.net.HttpUrlRequest;
import java.util.HashMap;
/**
* Tests that use mock URLRequestJobs to simulate URL requests.
*/
public class MockUrlRequestJobTest extends CronetTestBase {
private static final String TAG = "MockURLRequestJobTest";
private static final String MOCK_CRONET_TEST_SUCCESS_URL =
"http://mock.http/success.txt";
private static final String MOCK_CRONET_TEST_REDIRECT_URL =
"http://mock.http/redirect.html";
private static final String MOCK_CRONET_TEST_NOTFOUND_URL =
"http://mock.http/notfound.html";
private static final String MOCK_CRONET_TEST_FAILED_URL =
"http://mock.failed.request/-2";
// Helper function to create a HttpUrlRequest with the specified url.
private TestHttpUrlRequestListener createUrlRequestAndWaitForComplete(
String url) {
CronetTestActivity activity = launchCronetTestApp();
assertNotNull(activity);
// AddUrlInterceptors() after native application context is initialized.
MockUrlRequestJobUtil.addUrlInterceptors();
HashMap<String, String> headers = new HashMap<String, String>();
TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener();
HttpUrlRequest request = activity.mRequestFactory.createRequest(
url,
HttpUrlRequest.REQUEST_PRIORITY_MEDIUM,
headers,
listener);
request.start();
listener.blockForComplete();
return listener;
}
@SmallTest
@Feature({"Cronet"})
public void testSuccessURLRequest() throws Exception {
TestHttpUrlRequestListener listener =
createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_SUCCESS_URL);
assertEquals(MOCK_CRONET_TEST_SUCCESS_URL, listener.mUrl);
assertEquals(200, listener.mHttpStatusCode);
assertEquals("this is a text file\n",
new String(listener.mResponseAsBytes));
}
@SmallTest
@Feature({"Cronet"})
public void testRedirectURLRequest() throws Exception {
TestHttpUrlRequestListener listener =
createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_REDIRECT_URL);
// Currently Cronet does not expose the url after redirect.
assertEquals(MOCK_CRONET_TEST_REDIRECT_URL, listener.mUrl);
assertEquals(200, listener.mHttpStatusCode);
// Expect that the request is redirected to success.txt.
assertEquals("this is a text file\n",
new String(listener.mResponseAsBytes));
}
@SmallTest
@Feature({"Cronet"})
public void testNotFoundURLRequest() throws Exception {
TestHttpUrlRequestListener listener =
createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_NOTFOUND_URL);
assertEquals(MOCK_CRONET_TEST_NOTFOUND_URL, listener.mUrl);
assertEquals(404, listener.mHttpStatusCode);
assertEquals(
"<!DOCTYPE html>\n<html>\n<head>\n<title>Not found</title>\n" +
"<p>Test page loaded.</p>\n</head>\n</html>\n",
new String(listener.mResponseAsBytes));
}
@SmallTest
@Feature({"Cronet"})
public void testFailedURLRequest() throws Exception {
TestHttpUrlRequestListener listener =
createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_FAILED_URL);
assertEquals(MOCK_CRONET_TEST_FAILED_URL, listener.mUrl);
assertEquals(0, listener.mHttpStatusCode);
}
}