@@ -7,128 +7,141 @@ import 'package:test/test.dart';
7
7
void main () {
8
8
group ('StreamedRequest Extension' , () {
9
9
test ('should copy streamed request without modifications' , () {
10
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
10
+ final originalRequest =
11
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
11
12
originalRequest.headers['Content-Type' ] = 'application/octet-stream' ;
12
13
originalRequest.sink.add (utf8.encode ('test data' ));
13
14
originalRequest.sink.close ();
14
-
15
+
15
16
final copiedRequest = originalRequest.copyWith ();
16
-
17
+
17
18
expect (copiedRequest.method, equals (originalRequest.method));
18
19
expect (copiedRequest.url, equals (originalRequest.url));
19
20
expect (copiedRequest.headers, equals (originalRequest.headers));
20
- expect (copiedRequest.followRedirects, equals (originalRequest.followRedirects));
21
+ expect (copiedRequest.followRedirects,
22
+ equals (originalRequest.followRedirects));
21
23
expect (copiedRequest.maxRedirects, equals (originalRequest.maxRedirects));
22
- expect (copiedRequest.persistentConnection, equals (originalRequest.persistentConnection));
24
+ expect (copiedRequest.persistentConnection,
25
+ equals (originalRequest.persistentConnection));
23
26
});
24
27
25
28
test ('should copy streamed request with different method' , () {
26
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
29
+ final originalRequest =
30
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
27
31
originalRequest.sink.add (utf8.encode ('test data' ));
28
32
originalRequest.sink.close ();
29
-
33
+
30
34
final copiedRequest = originalRequest.copyWith (method: HttpMethod .PUT );
31
-
35
+
32
36
expect (copiedRequest.method, equals ('PUT' ));
33
37
expect (copiedRequest.url, equals (originalRequest.url));
34
38
expect (copiedRequest.headers, equals (originalRequest.headers));
35
39
});
36
40
37
41
test ('should copy streamed request with different URL' , () {
38
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
42
+ final originalRequest =
43
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
39
44
originalRequest.sink.add (utf8.encode ('test data' ));
40
45
originalRequest.sink.close ();
41
-
46
+
42
47
final newUrl = Uri .parse ('https://example.com/new-stream' );
43
48
final copiedRequest = originalRequest.copyWith (url: newUrl);
44
-
49
+
45
50
expect (copiedRequest.method, equals (originalRequest.method));
46
51
expect (copiedRequest.url, equals (newUrl));
47
52
expect (copiedRequest.headers, equals (originalRequest.headers));
48
53
});
49
54
50
55
test ('should copy streamed request with different headers' , () {
51
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
56
+ final originalRequest =
57
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
52
58
originalRequest.headers['Content-Type' ] = 'application/octet-stream' ;
53
59
originalRequest.sink.add (utf8.encode ('test data' ));
54
60
originalRequest.sink.close ();
55
-
61
+
56
62
final newHeaders = {'Authorization' : 'Bearer token' , 'X-Custom' : 'value' };
57
63
final copiedRequest = originalRequest.copyWith (headers: newHeaders);
58
-
64
+
59
65
expect (copiedRequest.method, equals (originalRequest.method));
60
66
expect (copiedRequest.url, equals (originalRequest.url));
61
67
expect (copiedRequest.headers, equals (newHeaders));
62
68
});
63
69
64
70
test ('should copy streamed request with different stream' , () {
65
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
71
+ final originalRequest =
72
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
66
73
originalRequest.sink.add (utf8.encode ('original data' ));
67
74
originalRequest.sink.close ();
68
-
75
+
69
76
final newStream = Stream .fromIterable ([utf8.encode ('new data' )]);
70
77
final copiedRequest = originalRequest.copyWith (stream: newStream);
71
-
78
+
72
79
expect (copiedRequest.method, equals (originalRequest.method));
73
80
expect (copiedRequest.url, equals (originalRequest.url));
74
81
expect (copiedRequest.headers, equals (originalRequest.headers));
75
82
});
76
83
77
84
test ('should copy streamed request with different followRedirects' , () {
78
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
85
+ final originalRequest =
86
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
79
87
originalRequest.followRedirects = true ;
80
88
originalRequest.sink.add (utf8.encode ('test data' ));
81
89
originalRequest.sink.close ();
82
-
90
+
83
91
final copiedRequest = originalRequest.copyWith (followRedirects: false );
84
-
92
+
85
93
expect (copiedRequest.method, equals (originalRequest.method));
86
94
expect (copiedRequest.url, equals (originalRequest.url));
87
95
expect (copiedRequest.headers, equals (originalRequest.headers));
88
96
expect (copiedRequest.followRedirects, equals (false ));
89
97
});
90
98
91
99
test ('should copy streamed request with different maxRedirects' , () {
92
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
100
+ final originalRequest =
101
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
93
102
originalRequest.maxRedirects = 5 ;
94
103
originalRequest.sink.add (utf8.encode ('test data' ));
95
104
originalRequest.sink.close ();
96
-
105
+
97
106
final copiedRequest = originalRequest.copyWith (maxRedirects: 10 );
98
-
107
+
99
108
expect (copiedRequest.method, equals (originalRequest.method));
100
109
expect (copiedRequest.url, equals (originalRequest.url));
101
110
expect (copiedRequest.headers, equals (originalRequest.headers));
102
111
expect (copiedRequest.maxRedirects, equals (10 ));
103
112
});
104
113
105
- test ('should copy streamed request with different persistentConnection' , () {
106
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
114
+ test ('should copy streamed request with different persistentConnection' ,
115
+ () {
116
+ final originalRequest =
117
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
107
118
originalRequest.persistentConnection = true ;
108
119
originalRequest.sink.add (utf8.encode ('test data' ));
109
120
originalRequest.sink.close ();
110
-
111
- final copiedRequest = originalRequest.copyWith (persistentConnection: false );
112
-
121
+
122
+ final copiedRequest =
123
+ originalRequest.copyWith (persistentConnection: false );
124
+
113
125
expect (copiedRequest.method, equals (originalRequest.method));
114
126
expect (copiedRequest.url, equals (originalRequest.url));
115
127
expect (copiedRequest.headers, equals (originalRequest.headers));
116
128
expect (copiedRequest.persistentConnection, equals (false ));
117
129
});
118
130
119
131
test ('should copy streamed request with multiple modifications' , () {
120
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
132
+ final originalRequest =
133
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
121
134
originalRequest.headers['Content-Type' ] = 'application/octet-stream' ;
122
135
originalRequest.followRedirects = true ;
123
136
originalRequest.maxRedirects = 5 ;
124
137
originalRequest.persistentConnection = true ;
125
138
originalRequest.sink.add (utf8.encode ('test data' ));
126
139
originalRequest.sink.close ();
127
-
140
+
128
141
final newUrl = Uri .parse ('https://example.com/new-stream' );
129
142
final newHeaders = {'Authorization' : 'Bearer token' };
130
143
final newStream = Stream .fromIterable ([utf8.encode ('new data' )]);
131
-
144
+
132
145
final copiedRequest = originalRequest.copyWith (
133
146
method: HttpMethod .PUT ,
134
147
url: newUrl,
@@ -138,7 +151,7 @@ void main() {
138
151
maxRedirects: 10 ,
139
152
persistentConnection: false ,
140
153
);
141
-
154
+
142
155
expect (copiedRequest.method, equals ('PUT' ));
143
156
expect (copiedRequest.url, equals (newUrl));
144
157
expect (copiedRequest.headers, equals (newHeaders));
@@ -148,134 +161,151 @@ void main() {
148
161
});
149
162
150
163
test ('should copy streamed request with large data' , () {
151
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
164
+ final originalRequest =
165
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
152
166
originalRequest.headers['Content-Type' ] = 'text/plain' ;
153
-
167
+
154
168
// Add large data in chunks
155
169
final largeData = 'A' * 1024 ; // 1KB
156
170
for (int i = 0 ; i < 10 ; i++ ) {
157
171
originalRequest.sink.add (utf8.encode (largeData));
158
172
}
159
173
originalRequest.sink.close ();
160
-
174
+
161
175
final copiedRequest = originalRequest.copyWith ();
162
-
176
+
163
177
expect (copiedRequest.method, equals (originalRequest.method));
164
178
expect (copiedRequest.url, equals (originalRequest.url));
165
179
expect (copiedRequest.headers, equals (originalRequest.headers));
166
180
});
167
181
168
182
test ('should copy streamed request with different HTTP methods' , () {
169
- final methods = [HttpMethod .GET , HttpMethod .POST , HttpMethod .PUT , HttpMethod .PATCH , HttpMethod .DELETE ];
170
-
183
+ final methods = [
184
+ HttpMethod .GET ,
185
+ HttpMethod .POST ,
186
+ HttpMethod .PUT ,
187
+ HttpMethod .PATCH ,
188
+ HttpMethod .DELETE
189
+ ];
190
+
171
191
for (final method in methods) {
172
- final originalRequest = StreamedRequest (method.asString, Uri .parse ('https://example.com/stream' ));
192
+ final originalRequest = StreamedRequest (
193
+ method.asString, Uri .parse ('https://example.com/stream' ));
173
194
originalRequest.sink.add (utf8.encode ('test data' ));
174
195
originalRequest.sink.close ();
175
-
196
+
176
197
final copiedRequest = originalRequest.copyWith ();
177
-
198
+
178
199
expect (copiedRequest.method, equals (method.asString));
179
200
expect (copiedRequest.url, equals (originalRequest.url));
180
201
expect (copiedRequest.headers, equals (originalRequest.headers));
181
202
}
182
203
});
183
204
184
205
test ('should copy streamed request with custom headers' , () {
185
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
186
- originalRequest.headers['Content-Type' ] = 'application/octet-stream; charset=utf-8' ;
206
+ final originalRequest =
207
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
208
+ originalRequest.headers['Content-Type' ] =
209
+ 'application/octet-stream; charset=utf-8' ;
187
210
originalRequest.headers['Authorization' ] = 'Bearer custom-token' ;
188
211
originalRequest.headers['X-Custom-Header' ] = 'custom-value' ;
189
212
originalRequest.sink.add (utf8.encode ('test data' ));
190
213
originalRequest.sink.close ();
191
-
214
+
192
215
final copiedRequest = originalRequest.copyWith ();
193
-
216
+
194
217
expect (copiedRequest.method, equals (originalRequest.method));
195
218
expect (copiedRequest.url, equals (originalRequest.url));
196
219
expect (copiedRequest.headers, equals (originalRequest.headers));
197
220
});
198
221
199
222
test ('should copy streamed request with empty stream' , () {
200
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
223
+ final originalRequest =
224
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
201
225
originalRequest.sink.close (); // No data added
202
-
226
+
203
227
final copiedRequest = originalRequest.copyWith ();
204
-
228
+
205
229
expect (copiedRequest.method, equals (originalRequest.method));
206
230
expect (copiedRequest.url, equals (originalRequest.url));
207
231
expect (copiedRequest.headers, equals (originalRequest.headers));
208
232
});
209
233
210
234
test ('should copy streamed request with binary data' , () {
211
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
235
+ final originalRequest =
236
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
212
237
originalRequest.headers['Content-Type' ] = 'application/octet-stream' ;
213
-
238
+
214
239
// Add binary data
215
240
final binaryData = List <int >.generate (1000 , (i) => i % 256 );
216
241
originalRequest.sink.add (binaryData);
217
242
originalRequest.sink.close ();
218
-
243
+
219
244
final copiedRequest = originalRequest.copyWith ();
220
-
245
+
221
246
expect (copiedRequest.method, equals (originalRequest.method));
222
247
expect (copiedRequest.url, equals (originalRequest.url));
223
248
expect (copiedRequest.headers, equals (originalRequest.headers));
224
249
});
225
250
226
251
test ('should copy streamed request with JSON data' , () {
227
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
252
+ final originalRequest =
253
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
228
254
originalRequest.headers['Content-Type' ] = 'application/json' ;
229
-
255
+
230
256
final jsonData = jsonEncode ({'key' : 'value' , 'number' : 42 });
231
257
originalRequest.sink.add (utf8.encode (jsonData));
232
258
originalRequest.sink.close ();
233
-
259
+
234
260
final copiedRequest = originalRequest.copyWith ();
235
-
261
+
236
262
expect (copiedRequest.method, equals (originalRequest.method));
237
263
expect (copiedRequest.url, equals (originalRequest.url));
238
264
expect (copiedRequest.headers, equals (originalRequest.headers));
239
265
});
240
266
241
267
test ('should copy streamed request with special characters in URL' , () {
242
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream/path with spaces?param=value with spaces' ));
268
+ final originalRequest = StreamedRequest (
269
+ 'POST' ,
270
+ Uri .parse (
271
+ 'https://example.com/stream/path with spaces?param=value with spaces' ));
243
272
originalRequest.sink.add (utf8.encode ('test data' ));
244
273
originalRequest.sink.close ();
245
-
274
+
246
275
final copiedRequest = originalRequest.copyWith ();
247
-
276
+
248
277
expect (copiedRequest.method, equals (originalRequest.method));
249
278
expect (copiedRequest.url, equals (originalRequest.url));
250
279
expect (copiedRequest.headers, equals (originalRequest.headers));
251
280
});
252
281
253
282
test ('should not modify original request when using copyWith' , () {
254
- final originalRequest = StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
283
+ final originalRequest =
284
+ StreamedRequest ('POST' , Uri .parse ('https://example.com/stream' ));
255
285
originalRequest.followRedirects = true ;
256
286
originalRequest.maxRedirects = 5 ;
257
287
originalRequest.persistentConnection = true ;
258
288
originalRequest.sink.add (utf8.encode ('test data' ));
259
289
originalRequest.sink.close ();
260
-
290
+
261
291
final copiedRequest = originalRequest.copyWith (
262
292
method: HttpMethod .PUT ,
263
293
followRedirects: false ,
264
294
maxRedirects: 10 ,
265
295
persistentConnection: false ,
266
296
);
267
-
297
+
268
298
// Verify the copied request has the new values
269
299
expect (copiedRequest.method, equals ('PUT' ));
270
300
expect (copiedRequest.followRedirects, equals (false ));
271
301
expect (copiedRequest.maxRedirects, equals (10 ));
272
302
expect (copiedRequest.persistentConnection, equals (false ));
273
-
303
+
274
304
// Verify the original request remains unchanged
275
305
expect (originalRequest.method, equals ('POST' ));
276
306
expect (originalRequest.followRedirects, equals (true ));
277
307
expect (originalRequest.maxRedirects, equals (5 ));
278
308
expect (originalRequest.persistentConnection, equals (true ));
279
309
});
280
310
});
281
- }
311
+ }
0 commit comments