| // 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); |
| } |
| ]); |
| })(); |