OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 chrome.tabs.getCurrent(function(tab) { | |
6 runTestsForTab([ | |
7 // onAuthRequired is not a blocking function. | |
8 function webSocketAuthRequiredNonBlocking() { | |
9 var url = getWSTestURL(testWebSocketPort); | |
10 expect( | |
11 [ //events | |
12 { label: 'onBeforeRequest', | |
13 event: 'onBeforeRequest', | |
14 details: { | |
15 url: url, | |
16 type: 'websocket', | |
17 frameUrl: 'unknown frame URL', | |
18 }, | |
19 }, | |
20 { label: 'onBeforeSendHeaders', | |
21 event: 'onBeforeSendHeaders', | |
22 details: { | |
23 url: url, | |
24 type: 'websocket', | |
25 }, | |
26 }, | |
27 { label: 'onSendHeaders', | |
28 event: 'onSendHeaders', | |
29 details: { | |
30 url: url, | |
31 type: 'websocket', | |
32 }, | |
33 }, | |
34 { label: 'onHeadersReceived', | |
35 event: 'onHeadersReceived', | |
36 details: { | |
37 url: url, | |
38 type: 'websocket', | |
39 statusCode: 401, | |
40 statusLine: 'HTTP/1.0 401 Unauthorized', | |
41 responseHeadersExist: true, | |
42 } | |
43 }, | |
44 { label: 'onAuthRequired', | |
45 event: 'onAuthRequired', | |
46 details: { | |
47 url: url, | |
48 type: 'websocket', | |
49 isProxy: false, | |
50 scheme: 'basic', | |
51 realm: 'Pywebsocket', | |
52 challenger: {host: 'localhost', port: testWebSocketPort}, | |
53 statusCode: 401, | |
54 statusLine: 'HTTP/1.0 401 Unauthorized', | |
55 responseHeadersExist: true, | |
56 } | |
57 }, | |
58 { label: 'onResponseStarted', | |
59 event: 'onResponseStarted', | |
60 details: { | |
61 url: url, | |
62 type: 'websocket', | |
63 ip: '127.0.0.1', | |
64 fromCache: false, | |
65 statusCode: 401, | |
66 statusLine: 'HTTP/1.0 401 Unauthorized', | |
67 responseHeadersExist: true, | |
68 } | |
69 }, | |
70 { label: 'onErrorOccurred', | |
71 event: 'onErrorOccurred', | |
72 details: { | |
73 url: url, | |
74 type: 'websocket', | |
75 fromCache: false, | |
76 error: 'net::ERR_ABORTED', | |
77 } | |
78 }, | |
79 ], | |
80 [ // event order | |
81 ['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders', | |
82 'onHeadersReceived', 'onAuthRequired', 'onResponseStarted', | |
83 'onErrorOccurred'] | |
84 ], | |
85 {urls: ['<all_urls>']}, // filter | |
86 ['responseHeaders'] // extraInfoSpec | |
87 ); | |
88 testWebSocketConnection(url, false); | |
89 }, | |
90 | |
91 // onAuthRequired is a blocking function but takes no action. | |
92 function webSocketAuthRequiredSyncNoAction() { | |
93 var url = getWSTestURL(testWebSocketPort); | |
94 expect( | |
95 [ // events | |
96 { label: 'onBeforeRequest', | |
97 event: 'onBeforeRequest', | |
98 details: { | |
99 url: url, | |
100 type: 'websocket', | |
101 frameUrl: 'unknown frame URL', | |
102 } | |
103 }, | |
104 { label: 'onBeforeSendHeaders', | |
105 event: 'onBeforeSendHeaders', | |
106 details: { | |
107 url: url, | |
108 type: 'websocket', | |
109 }, | |
110 }, | |
111 { label: 'onSendHeaders', | |
112 event: 'onSendHeaders', | |
113 details: { | |
114 url: url, | |
115 type: 'websocket', | |
116 } | |
117 }, | |
118 { label: 'onHeadersReceived', | |
119 event: 'onHeadersReceived', | |
120 details: { | |
121 url: url, | |
122 type: 'websocket', | |
123 statusCode: 401, | |
124 statusLine: 'HTTP/1.0 401 Unauthorized', | |
125 } | |
126 }, | |
127 { label: 'onAuthRequired', | |
128 event: 'onAuthRequired', | |
129 details: { | |
130 url: url, | |
131 type: 'websocket', | |
132 isProxy: false, | |
133 scheme: 'basic', | |
134 realm: 'Pywebsocket', | |
135 challenger: {host: 'localhost', port: testWebSocketPort}, | |
136 statusCode: 401, | |
137 statusLine: 'HTTP/1.0 401 Unauthorized', | |
138 } | |
139 }, | |
140 { label: 'onResponseStarted', | |
141 event: 'onResponseStarted', | |
142 details: { | |
143 url: url, | |
144 type: 'websocket', | |
145 fromCache: false, | |
146 ip: '127.0.0.1', | |
147 statusCode: 401, | |
148 statusLine: 'HTTP/1.0 401 Unauthorized', | |
149 } | |
150 }, | |
151 { label: 'onErrorOccurred', | |
152 event: 'onErrorOccurred', | |
153 details: { | |
154 url: url, | |
155 type: 'websocket', | |
156 fromCache: false, | |
157 error: 'net::ERR_ABORTED', | |
158 } | |
159 }, | |
160 ], | |
161 [ // event order | |
162 ['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders', | |
163 'onHeadersReceived', 'onAuthRequired', 'onResponseStarted', | |
164 'onErrorOccurred'] | |
165 ], | |
166 {urls: ['<all_urls>']}, ['blocking']); | |
167 testWebSocketConnection(url, false); | |
168 }, | |
169 | |
170 // onAuthRequired is a blocking function that cancels the auth attempt. | |
171 function webSocketAuthRequiredSyncCancelAuth() { | |
172 var url = getWSTestURL(testWebSocketPort); | |
173 expect( | |
174 [ // events | |
175 { label: 'onBeforeRequest', | |
176 event: 'onBeforeRequest', | |
177 details: { | |
178 url: url, | |
179 type: 'websocket', | |
180 frameUrl: 'unknown frame URL', | |
181 } | |
182 }, | |
183 { label: 'onBeforeSendHeaders', | |
184 event: 'onBeforeSendHeaders', | |
185 details: { | |
186 url: url, | |
187 type: 'websocket', | |
188 }, | |
189 }, | |
190 { label: 'onSendHeaders', | |
191 event: 'onSendHeaders', | |
192 details: { | |
193 url: url, | |
194 type: 'websocket', | |
195 } | |
196 }, | |
197 { label: 'onHeadersReceived', | |
198 event: 'onHeadersReceived', | |
199 details: { | |
200 url: url, | |
201 type: 'websocket', | |
202 statusCode: 401, | |
203 statusLine: 'HTTP/1.0 401 Unauthorized', | |
204 } | |
205 }, | |
206 { label: 'onAuthRequired', | |
207 event: 'onAuthRequired', | |
208 details: { | |
209 url: url, | |
210 type: 'websocket', | |
211 isProxy: false, | |
212 scheme: 'basic', | |
213 realm: 'Pywebsocket', | |
214 challenger: {host: 'localhost', port: testWebSocketPort}, | |
215 statusCode: 401, | |
216 statusLine: 'HTTP/1.0 401 Unauthorized', | |
217 }, | |
218 retval: {cancel: true} | |
219 }, | |
220 { label: 'onResponseStarted', | |
221 event: 'onResponseStarted', | |
222 details: { | |
223 url: url, | |
224 type: 'websocket', | |
225 fromCache: false, | |
226 ip: '127.0.0.1', | |
227 statusCode: 401, | |
228 statusLine: 'HTTP/1.0 401 Unauthorized', | |
229 } | |
230 }, | |
231 { label: 'onErrorOccurred', | |
232 event: 'onErrorOccurred', | |
233 details: { | |
234 url: url, | |
235 type: 'websocket', | |
236 fromCache: false, | |
237 error: 'net::ERR_ABORTED', | |
238 } | |
239 }, | |
240 ], | |
241 [ // event order | |
242 ['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders', | |
243 'onHeadersReceived', 'onAuthRequired', 'onResponseStarted', | |
244 'onErrorOccurred'] | |
245 ], | |
246 {urls: ['<all_urls>']}, ['blocking']); | |
247 testWebSocketConnection(url, false); | |
248 }, | |
249 | |
250 // onAuthRequired is a blocking function setting authentication credentials. | |
251 function webSocketAuthRequiredSyncSetAuth() { | |
252 var url = getWSTestURL(testWebSocketPort); | |
253 expect( | |
254 [ // events | |
255 { label: 'onBeforeRequest', | |
256 event: 'onBeforeRequest', | |
257 details: { | |
258 url: url, | |
259 type: 'websocket', | |
260 frameUrl: 'unknown frame URL', | |
261 } | |
262 }, | |
263 { label: 'onBeforeSendHeaders', | |
264 event: 'onBeforeSendHeaders', | |
265 details: { | |
266 url: url, | |
267 type: 'websocket', | |
268 }, | |
269 }, | |
270 { label: 'onSendHeaders', | |
271 event: 'onSendHeaders', | |
272 details: { | |
273 url: url, | |
274 type: 'websocket', | |
275 } | |
276 }, | |
277 { label: 'onHeadersReceived', | |
278 event: 'onHeadersReceived', | |
279 details: { | |
280 url: url, | |
281 type: 'websocket', | |
282 statusCode: 401, | |
283 statusLine: 'HTTP/1.0 401 Unauthorized', | |
284 } | |
285 }, | |
286 { label: 'onAuthRequired', | |
287 event: 'onAuthRequired', | |
288 details: { | |
289 url: url, | |
290 type: 'websocket', | |
291 isProxy: false, | |
292 scheme: 'basic', | |
293 realm: 'Pywebsocket', | |
294 challenger: {host: 'localhost', port: testWebSocketPort}, | |
295 statusCode: 401, | |
296 statusLine: 'HTTP/1.0 401 Unauthorized', | |
297 }, | |
298 retval: {authCredentials: {username: 'test', password: 'test'}} | |
Devlin
2017/02/21 16:10:44
Do we verify anywhere if the authCredentials were
pkalinnikov
2017/02/21 19:18:16
As discussed offline, I put a comment elaborating
| |
299 }, | |
300 { label: 'onResponseStarted', | |
301 event: 'onResponseStarted', | |
302 details: { | |
303 url: url, | |
304 type: 'websocket', | |
305 ip: '127.0.0.1', | |
306 fromCache: false, | |
307 statusCode: 101, | |
308 statusLine: 'HTTP/1.1 101 Switching Protocols', | |
309 }, | |
310 }, | |
311 { label: 'onCompleted', | |
312 event: 'onCompleted', | |
313 details: { | |
314 url: url, | |
315 type: 'websocket', | |
316 fromCache: false, | |
317 statusCode: 101, | |
318 statusLine: 'HTTP/1.1 101 Switching Protocols', | |
319 } | |
320 }, | |
321 ], | |
322 [ // event order | |
323 ['onBeforeRequest', 'onBeforeSendHeaders', 'onSendHeaders', | |
324 'onHeadersReceived', 'onAuthRequired', 'onResponseStarted', | |
325 'onCompleted'] | |
326 ], | |
327 {urls: ['<all_urls>']}, ['blocking']); | |
328 testWebSocketConnection(url, true); | |
329 }, | |
330 ], tab); | |
331 }); | |
OLD | NEW |