@@ -9,139 +9,6 @@ import 'package:flutter/foundation.dart';
9
9
import 'package:integration_test/integration_test.dart' ;
10
10
import 'package:test/test.dart' ;
11
11
12
- void testWebSocketTask () {
13
- group ('websocket' , () {
14
- late HttpServer server;
15
- int ? lastCloseCode;
16
- String ? lastCloseReason;
17
-
18
- setUp (() async {
19
- lastCloseCode = null ;
20
- lastCloseReason = null ;
21
- server = await HttpServer .bind ('localhost' , 0 )
22
- ..listen ((request) {
23
- if (request.uri.path.endsWith ('error' )) {
24
- request.response.statusCode = 500 ;
25
- request.response.close ();
26
- } else {
27
- WebSocketTransformer .upgrade (request)
28
- .then ((websocket) => websocket.listen ((event) {
29
- final code = request.uri.queryParameters['code' ];
30
- final reason = request.uri.queryParameters['reason' ];
31
-
32
- websocket.add (event);
33
- if (! request.uri.queryParameters.containsKey ('noclose' )) {
34
- websocket.close (
35
- code == null ? null : int .parse (code), reason);
36
- }
37
- }, onDone: () {
38
- lastCloseCode = websocket.closeCode;
39
- lastCloseReason = websocket.closeReason;
40
- }));
41
- }
42
- });
43
- });
44
-
45
- tearDown (() async {
46
- await server.close ();
47
- });
48
-
49
- test ('client code and reason' , () async {
50
- final session = URLSession .sharedSession ();
51
- final task = session.webSocketTaskWithRequest (URLRequest .fromUrl (
52
- Uri .parse ('ws://localhost:${server .port }/?noclose' )))
53
- ..resume ();
54
- await task
55
- .sendMessage (URLSessionWebSocketMessage .fromString ('Hello World!' ));
56
- await task.receiveMessage ();
57
- task.cancelWithCloseCode (
58
- 4998 , Data .fromUint8List (Uint8List .fromList ('Bye' .codeUnits)));
59
-
60
- // Allow the server to run and save the close code.
61
- while (lastCloseCode == null ) {
62
- await Future <void >.delayed (const Duration (milliseconds: 10 ));
63
- }
64
- expect (lastCloseCode, 4998 );
65
- expect (lastCloseReason, 'Bye' );
66
- });
67
-
68
- test ('server code and reason' , () async {
69
- final session = URLSession .sharedSession ();
70
- final task = session.webSocketTaskWithRequest (URLRequest .fromUrl (
71
- Uri .parse ('ws://localhost:${server .port }/?code=4999&reason=fun' )))
72
- ..resume ();
73
- await task
74
- .sendMessage (URLSessionWebSocketMessage .fromString ('Hello World!' ));
75
- await task.receiveMessage ();
76
- await expectLater (task.receiveMessage (),
77
- throwsA (isA <Error >().having ((e) => e.code, 'code' , 57 // NOT_CONNECTED
78
- )));
79
-
80
- expect (task.closeCode, 4999 );
81
- expect (task.closeReason! .bytes, 'fun' .codeUnits);
82
- task.cancel ();
83
- });
84
-
85
- test ('data message' , () async {
86
- final session = URLSession .sharedSession ();
87
- final task = session.webSocketTaskWithRequest (
88
- URLRequest .fromUrl (Uri .parse ('ws://localhost:${server .port }' )))
89
- ..resume ();
90
- await task.sendMessage (URLSessionWebSocketMessage .fromData (
91
- Data .fromUint8List (Uint8List .fromList ([1 , 2 , 3 ]))));
92
- final receivedMessage = await task.receiveMessage ();
93
- expect (receivedMessage.type,
94
- URLSessionWebSocketMessageType .urlSessionWebSocketMessageTypeData);
95
- expect (receivedMessage.data! .bytes, [1 , 2 , 3 ]);
96
- expect (receivedMessage.string, null );
97
- task.cancel ();
98
- });
99
-
100
- test ('text message' , () async {
101
- final session = URLSession .sharedSession ();
102
- final task = session.webSocketTaskWithRequest (
103
- URLRequest .fromUrl (Uri .parse ('ws://localhost:${server .port }' )))
104
- ..resume ();
105
- await task
106
- .sendMessage (URLSessionWebSocketMessage .fromString ('Hello World!' ));
107
- final receivedMessage = await task.receiveMessage ();
108
- expect (receivedMessage.type,
109
- URLSessionWebSocketMessageType .urlSessionWebSocketMessageTypeString);
110
- expect (receivedMessage.data, null );
111
- expect (receivedMessage.string, 'Hello World!' );
112
- task.cancel ();
113
- });
114
-
115
- test ('send failure' , () async {
116
- final session = URLSession .sharedSession ();
117
- final task = session.webSocketTaskWithRequest (
118
- URLRequest .fromUrl (Uri .parse ('ws://localhost:${server .port }/error' )))
119
- ..resume ();
120
- await expectLater (
121
- task.sendMessage (
122
- URLSessionWebSocketMessage .fromString ('Hello World!' )),
123
- throwsA (isA <Error >().having (
124
- (e) => e.code, 'code' , - 1011 // NSURLErrorBadServerResponse
125
- )));
126
- task.cancel ();
127
- });
128
-
129
- test ('receive failure' , () async {
130
- final session = URLSession .sharedSession ();
131
- final task = session.webSocketTaskWithRequest (
132
- URLRequest .fromUrl (Uri .parse ('ws://localhost:${server .port }' )))
133
- ..resume ();
134
- await task
135
- .sendMessage (URLSessionWebSocketMessage .fromString ('Hello World!' ));
136
- await task.receiveMessage ();
137
- await expectLater (task.receiveMessage (),
138
- throwsA (isA <Error >().having ((e) => e.code, 'code' , 57 // NOT_CONNECTED
139
- )));
140
- task.cancel ();
141
- });
142
- });
143
- }
144
-
145
12
void testURLSessionTask (
146
13
URLSessionTask Function (URLSession session, Uri url) f) {
147
14
group ('task states' , () {
@@ -364,6 +231,4 @@ void main() {
364
231
testURLSessionTask ((session, uri) =>
365
232
session.downloadTaskWithRequest (URLRequest .fromUrl (uri)));
366
233
});
367
-
368
- testWebSocketTask ();
369
234
}
0 commit comments