blob: 8724d27b608ec3c731f18b0ea6ee91bbbd4d5132 [file] [log] [blame]
// Copyright 2017 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.
(async function() {
TestRunner.addResult(`Tests XHR replaying. Bug 95187\n`);
await TestRunner.loadModule('network_test_runner');
await TestRunner.showPanel('network');
function lastRequest() {
return NetworkTestRunner.networkRequests().pop();
}
async function dumpRequest(request) {
TestRunner.addResult('Dumping request: ');
TestRunner.addResult(' url: ' + request.url());
var formData = await request.requestFormData();
if (formData)
TestRunner.addResult(' requestFormData: ' + formData);
TestRunner.addResult(' requestMethod: ' + request.requestMethod);
TestRunner.addResult(' test request header value: ' + request.requestHeaderValue('headerName'));
}
function assertRequestEqual(request1, request2) {
TestRunner.assertEquals(request1.url(), request2.url(), 'Requests have different url');
TestRunner.assertEquals(
request1.requestFormData, request2.requestFormData, 'Requests have different requestFormData');
TestRunner.assertEquals(request1.requestMethod, request2.requestMethod, 'Requests have different requestMethod');
TestRunner.assertEquals(
request1.requestHeadersText, request2.requestHeadersText, 'Requests have different requestHeadersText');
}
async function testXHRReplay(method, url, async, user, password, headers, withCredentials, payload, type, callback) {
NetworkTestRunner.makeXHR(method, url, async, user, password, headers, withCredentials, payload, type);
var originalRequest =
await TestRunner.waitForEvent(SDK.NetworkLog.Events.RequestAdded, SDK.NetworkLog.instance());
await dumpRequest(originalRequest);
TestRunner.NetworkAgent.replayXHR(originalRequest.requestId());
var replayedRequest =
await TestRunner.waitForEvent(SDK.NetworkLog.Events.RequestAdded, SDK.NetworkLog.instance());
assertRequestEqual(originalRequest, replayedRequest);
callback();
}
TestRunner.runTestSuite([
function testGetStaticAsync(next) {
testXHRReplay(
'GET', 'resources/empty.html', true, 'user', 'password', [['headerName', 'headerValueA']], false, undefined,
undefined, next);
},
function testGetStaticSync(next) {
testXHRReplay(
'GET', 'resources/empty.html', false, 'user', 'password', [['headerName', 'headerValueB']], false, undefined,
undefined, next);
},
function testGetCachedAsync(next) {
testXHRReplay(
'GET', 'resources/random-cached.php', true, 'user', 'password', [['headerName', 'headerValueC']], false,
undefined, undefined, next);
},
function testGetCachedSync(next) {
testXHRReplay(
'GET', 'resources/random-cached.php', false, 'user', 'password', [['headerName', 'headerValueD']], false,
undefined, undefined, next);
},
function testGetRandomAsync(next) {
testXHRReplay(
'GET', 'resources/random.php', true, 'user', 'password', [['headerName', 'headerValueE']], false, undefined,
undefined, next);
},
function testGetRandomSync(next) {
testXHRReplay(
'GET', 'resources/random.php', false, 'user', 'password', [['headerName', 'headerValueF']], false, undefined,
undefined, next);
},
function testPostAsync(next) {
testXHRReplay(
'POST', 'resources/random.php', true, 'user', 'password', [['headerName', 'headerValueG']], false, 'payload',
undefined, next);
},
function testPostSync(next) {
testXHRReplay(
'POST', 'resources/random.php', false, 'user', 'password', [['headerName', 'headerValueH']], false, 'payload',
undefined, next);
}
]);
})();