Chromium Code Reviews| Index: tests/standalone/io/web_socket_test.dart | 
| diff --git a/tests/standalone/io/web_socket_test.dart b/tests/standalone/io/web_socket_test.dart | 
| index 2e45a39fe8419d005ff897ec9a183e1c2dc9f6fc..27a903e1ed326aca99f7f6da0976ccb1d78a989a 100644 | 
| --- a/tests/standalone/io/web_socket_test.dart | 
| +++ b/tests/standalone/io/web_socket_test.dart | 
| @@ -12,9 +12,12 @@ import "dart:io"; | 
| import "dart:typed_data"; | 
| import "package:async_helper/async_helper.dart"; | 
| +import "package:crypto/crypto.dart"; | 
| import "package:expect/expect.dart"; | 
| import "package:path/path.dart"; | 
| +const WEB_SOCKET_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; | 
| + | 
| const String CERT_NAME = 'localhost_cert'; | 
| const String HOST_NAME = 'localhost'; | 
| @@ -383,6 +386,42 @@ class SecurityConfiguration { | 
| }); | 
| } | 
| + testFromSocket() { | 
| + createServer().then((server) { | 
| + server.listen((request) { | 
| + Expect.equals('Upgrade', request.headers.value(HttpHeaders.CONNECTION)); | 
| + Expect.equals('websocket', request.headers.value(HttpHeaders.UPGRADE)); | 
| + | 
| + var key = request.headers.value('Sec-WebSocket-Key'); | 
| + var sha1 = new SHA1()..add("$key$WEB_SOCKET_GUID".codeUnits); | 
| + var accept = CryptoUtils.bytesToBase64(sha1.close()); | 
| + request.response | 
| + ..statusCode = HttpStatus.SWITCHING_PROTOCOLS | 
| + ..headers.add(HttpHeaders.CONNECTION, "Upgrade") | 
| + ..headers.add(HttpHeaders.UPGRADE, "websocket") | 
| + ..headers.add("Sec-WebSocket-Accept", accept); | 
| + request.response.contentLength = 0; | 
| + return request.response.detachSocket() | 
| 
 
kustermann
2014/04/29 20:36:50
The 'return' here has no effect right?
 
nweiz
2014/04/30 22:33:27
Removed.
 
 | 
| + .then((socket) => new WebSocket.fromUpgradedSocket(socket)) | 
| + .then((websocket) { | 
| + websocket.add("Hello"); | 
| + websocket.close(); | 
| + }); | 
| + }); | 
| + | 
| + var url = '${secure ? "wss" : "ws"}://$HOST_NAME:${server.port}/'; | 
| + | 
| + var client = new HttpClient(); | 
| + var completer = new Completer(); | 
| 
 
kustermann
2014/04/29 20:36:50
[client] and [completer] seem to be unused.
 
nweiz
2014/04/30 22:33:27
Removed.
 
 | 
| + WebSocket.connect(url).then((websocket) { | 
| + return websocket.listen((message) { | 
| + Expect.equals("Hello", message); | 
| + websocket.close(); | 
| + }).asFuture(); | 
| + }).then((_) => server.close()); | 
| + }); | 
| + } | 
| + | 
| void runTests() { | 
| testRequestResponseClientCloses(2, null, null); | 
| testRequestResponseClientCloses(2, 3001, null); | 
| @@ -403,6 +442,7 @@ class SecurityConfiguration { | 
| testUsePOST(); | 
| testConnections(10, 3002, "Got tired"); | 
| testIndividualUpgrade(5); | 
| + testFromSocket(); | 
| } | 
| } |