blob: b99416ca41434bc94015452dda42dcbe82a7a7c8 [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.
chrome.tabs.getCurrent(function(tab) {
runTestsForTab([
// onAuthRequired is not a blocking function.
function webSocketAuthRequiredNonBlocking() {
var url = getWSTestURL(testWebSocketPort);
expect(
[ //events
{ label: 'onBeforeRequest',
event: 'onBeforeRequest',
details: {
url: url,
type: 'websocket',
frameUrl: 'unknown frame URL',
},
},
{ label: 'onBeforeSendHeaders',
event: 'onBeforeSendHeaders',
details: {
url: url,
type: 'websocket',
},
},
{ label: 'onSendHeaders',
event: 'onSendHeaders',
details: {
url: url,
type: 'websocket',
},
},
{ label: 'onHeadersReceived',
event: 'onHeadersReceived',
details: {
url: url,
type: 'websocket',
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
responseHeadersExist: true,
}
},
{ label: 'onAuthRequired',
event: 'onAuthRequired',
details: {
url: url,
type: 'websocket',
isProxy: false,
scheme: 'basic',
realm: 'Pywebsocket',
challenger: {host: 'localhost', port: testWebSocketPort},
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
responseHeadersExist: true,
}
},
{ label: 'onResponseStarted',
event: 'onResponseStarted',
details: {
url: url,
type: 'websocket',
ip: '127.0.0.1',
fromCache: false,
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
responseHeadersExist: true,
}
},
{ label: 'onErrorOccurred',
event: 'onErrorOccurred',
details: {
url: url,
type: 'websocket',
fromCache: false,
error: 'net::ERR_ABORTED',
}
},
],
[ // event order
['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
'onHeadersReceived', 'onAuthRequired', 'onResponseStarted',
'onErrorOccurred']
],
{urls: ['<all_urls>']}, // filter
['responseHeaders'] // extraInfoSpec
);
testWebSocketConnection(url, false /* expectedToConnect*/);
},
// onAuthRequired is a blocking function but takes no action.
function webSocketAuthRequiredSyncNoAction() {
var url = getWSTestURL(testWebSocketPort);
expect(
[ // events
{ label: 'onBeforeRequest',
event: 'onBeforeRequest',
details: {
url: url,
type: 'websocket',
frameUrl: 'unknown frame URL',
}
},
{ label: 'onBeforeSendHeaders',
event: 'onBeforeSendHeaders',
details: {
url: url,
type: 'websocket',
},
},
{ label: 'onSendHeaders',
event: 'onSendHeaders',
details: {
url: url,
type: 'websocket',
}
},
{ label: 'onHeadersReceived',
event: 'onHeadersReceived',
details: {
url: url,
type: 'websocket',
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
}
},
{ label: 'onAuthRequired',
event: 'onAuthRequired',
details: {
url: url,
type: 'websocket',
isProxy: false,
scheme: 'basic',
realm: 'Pywebsocket',
challenger: {host: 'localhost', port: testWebSocketPort},
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
}
},
{ label: 'onResponseStarted',
event: 'onResponseStarted',
details: {
url: url,
type: 'websocket',
fromCache: false,
ip: '127.0.0.1',
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
}
},
{ label: 'onErrorOccurred',
event: 'onErrorOccurred',
details: {
url: url,
type: 'websocket',
fromCache: false,
error: 'net::ERR_ABORTED',
}
},
],
[ // event order
['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
'onHeadersReceived', 'onAuthRequired', 'onResponseStarted',
'onErrorOccurred']
],
{urls: ['<all_urls>']}, ['blocking']);
testWebSocketConnection(url, false /* expectedToConnect*/);
},
// onAuthRequired is a blocking function that cancels the auth attempt.
function webSocketAuthRequiredSyncCancelAuth() {
var url = getWSTestURL(testWebSocketPort);
expect(
[ // events
{ label: 'onBeforeRequest',
event: 'onBeforeRequest',
details: {
url: url,
type: 'websocket',
frameUrl: 'unknown frame URL',
}
},
{ label: 'onBeforeSendHeaders',
event: 'onBeforeSendHeaders',
details: {
url: url,
type: 'websocket',
},
},
{ label: 'onSendHeaders',
event: 'onSendHeaders',
details: {
url: url,
type: 'websocket',
}
},
{ label: 'onHeadersReceived',
event: 'onHeadersReceived',
details: {
url: url,
type: 'websocket',
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
}
},
{ label: 'onAuthRequired',
event: 'onAuthRequired',
details: {
url: url,
type: 'websocket',
isProxy: false,
scheme: 'basic',
realm: 'Pywebsocket',
challenger: {host: 'localhost', port: testWebSocketPort},
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
},
retval: {cancel: true}
},
{ label: 'onResponseStarted',
event: 'onResponseStarted',
details: {
url: url,
type: 'websocket',
fromCache: false,
ip: '127.0.0.1',
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
}
},
{ label: 'onErrorOccurred',
event: 'onErrorOccurred',
details: {
url: url,
type: 'websocket',
fromCache: false,
error: 'net::ERR_ABORTED',
}
},
],
[ // event order
['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
'onHeadersReceived', 'onAuthRequired', 'onResponseStarted',
'onErrorOccurred']
],
{urls: ['<all_urls>']}, ['blocking']);
testWebSocketConnection(url, false /* expectedToConnect*/);
},
// onAuthRequired is a blocking function setting authentication credentials.
function webSocketAuthRequiredSyncSetAuth() {
var url = getWSTestURL(testWebSocketPort);
expect(
[ // events
{ label: 'onBeforeRequest',
event: 'onBeforeRequest',
details: {
url: url,
type: 'websocket',
frameUrl: 'unknown frame URL',
}
},
{ label: 'onBeforeSendHeaders',
event: 'onBeforeSendHeaders',
details: {
url: url,
type: 'websocket',
},
},
{ label: 'onSendHeaders',
event: 'onSendHeaders',
details: {
url: url,
type: 'websocket',
}
},
{ label: 'onHeadersReceived',
event: 'onHeadersReceived',
details: {
url: url,
type: 'websocket',
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
}
},
{ label: 'onAuthRequired',
event: 'onAuthRequired',
details: {
url: url,
type: 'websocket',
isProxy: false,
scheme: 'basic',
realm: 'Pywebsocket',
challenger: {host: 'localhost', port: testWebSocketPort},
statusCode: 401,
statusLine: 'HTTP/1.0 401 Unauthorized',
},
// Note: The test WebSocket server accepts only these credentials.
retval: {authCredentials: {username: 'test', password: 'test'}}
},
{ label: 'onResponseStarted',
event: 'onResponseStarted',
details: {
url: url,
type: 'websocket',
ip: '127.0.0.1',
fromCache: false,
statusCode: 101,
statusLine: 'HTTP/1.1 101 Switching Protocols',
},
},
{ label: 'onCompleted',
event: 'onCompleted',
details: {
url: url,
type: 'websocket',
fromCache: false,
statusCode: 101,
statusLine: 'HTTP/1.1 101 Switching Protocols',
}
},
],
[ // event order
['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders',
'onHeadersReceived', 'onAuthRequired', 'onResponseStarted',
'onCompleted']
],
{urls: ['<all_urls>']}, ['blocking']);
testWebSocketConnection(url, true /* expectedToConnect*/);
},
], tab);
});