1
1
import { Buffer } from 'buffer' ;
2
- import { promisify } from 'util' ;
3
2
import stream from 'stream' ;
4
- import fs from 'fs' ;
5
3
// @ts -expect-error Fails to find slow-stream/index.d.ts
6
4
import SlowStream from 'slow-stream' ;
7
5
import toReadableStream from 'to-readable-stream' ;
8
6
import getStream from 'get-stream' ;
9
- import FormData from 'form-data' ;
10
- import tempy from 'tempy' ;
11
7
import is from '@sindresorhus/is' ;
12
8
import test , { ExecutionContext } from 'ava' ;
13
9
import { Handler } from 'express' ;
@@ -45,24 +41,6 @@ const checkEvents = (t: ExecutionContext, events: Progress[], bodySize?: number)
45
41
46
42
const file = Buffer . alloc ( 1024 * 1024 * 2 ) ;
47
43
48
- const downloadEndpoint : Handler = ( _request , response ) => {
49
- response . setHeader ( 'content-length' , file . length ) ;
50
-
51
- stream . pipeline (
52
- toReadableStream ( file ) ,
53
- new SlowStream ( { maxWriteInterval : 50 } ) ,
54
- response ,
55
- ( ) => {
56
- response . end ( ) ;
57
- } ,
58
- ) ;
59
- } ;
60
-
61
- const noTotalEndpoint : Handler = ( _request , response ) => {
62
- response . write ( 'hello' ) ;
63
- response . end ( ) ;
64
- } ;
65
-
66
44
const uploadEndpoint : Handler = ( request , response ) => {
67
45
stream . pipeline (
68
46
request ,
@@ -73,118 +51,6 @@ const uploadEndpoint: Handler = (request, response) => {
73
51
) ;
74
52
} ;
75
53
76
- test ( 'download progress' , withServer , async ( t , server , got ) => {
77
- server . get ( '/' , downloadEndpoint ) ;
78
-
79
- const events : Progress [ ] = [ ] ;
80
-
81
- const { body} = await got ( { responseType : 'buffer' } )
82
- . on ( 'downloadProgress' , event => events . push ( event ) ) ;
83
-
84
- checkEvents ( t , events , body . length ) ;
85
- } ) ;
86
-
87
- test ( 'download progress - missing total size' , withServer , async ( t , server , got ) => {
88
- server . get ( '/' , noTotalEndpoint ) ;
89
-
90
- const events : Progress [ ] = [ ] ;
91
-
92
- await got ( '' ) . on ( 'downloadProgress' , ( event : Progress ) => events . push ( event ) ) ;
93
-
94
- t . is ( events [ 0 ] ?. total , undefined ) ;
95
- checkEvents ( t , events ) ;
96
- } ) ;
97
-
98
- test ( 'download progress - stream' , withServer , async ( t , server , got ) => {
99
- server . get ( '/' , downloadEndpoint ) ;
100
-
101
- const events : Progress [ ] = [ ] ;
102
-
103
- const stream = got . stream ( { responseType : 'buffer' } )
104
- . on ( 'downloadProgress' , event => events . push ( event ) ) ;
105
-
106
- await getStream ( stream ) ;
107
-
108
- checkEvents ( t , events , file . length ) ;
109
- } ) ;
110
-
111
- test ( 'upload progress - file' , withServer , async ( t , server , got ) => {
112
- server . post ( '/' , uploadEndpoint ) ;
113
-
114
- const events : Progress [ ] = [ ] ;
115
-
116
- await got . post ( { body : file } ) . on ( 'uploadProgress' , ( event : Progress ) => events . push ( event ) ) ;
117
-
118
- checkEvents ( t , events , file . length ) ;
119
- } ) ;
120
-
121
- test ( 'upload progress - file stream' , withServer , async ( t , server , got ) => {
122
- server . post ( '/' , uploadEndpoint ) ;
123
-
124
- const path = tempy . file ( ) ;
125
- fs . writeFileSync ( path , file ) ;
126
-
127
- const { size} = await promisify ( fs . stat ) ( path ) ;
128
-
129
- const events : Progress [ ] = [ ] ;
130
-
131
- await got . post ( {
132
- body : fs . createReadStream ( path ) ,
133
- headers : {
134
- 'content-length' : size . toString ( ) ,
135
- } ,
136
- } )
137
- . on ( 'uploadProgress' , ( event : Progress ) => events . push ( event ) ) ;
138
-
139
- checkEvents ( t , events , file . length ) ;
140
- } ) ;
141
-
142
- test ( 'upload progress - form data' , withServer , async ( t , server , got ) => {
143
- server . post ( '/' , uploadEndpoint ) ;
144
-
145
- const events : Progress [ ] = [ ] ;
146
-
147
- const body = new FormData ( ) ;
148
- body . append ( 'key' , 'value' ) ;
149
- body . append ( 'file' , file ) ;
150
-
151
- const size = await promisify ( body . getLength . bind ( body ) ) ( ) ;
152
-
153
- await got . post ( { body} ) . on ( 'uploadProgress' , ( event : Progress ) => events . push ( event ) ) ;
154
-
155
- checkEvents ( t , events , size ) ;
156
- } ) ;
157
-
158
- test ( 'upload progress - json' , withServer , async ( t , server , got ) => {
159
- server . post ( '/' , uploadEndpoint ) ;
160
-
161
- const body = JSON . stringify ( { key : 'value' } ) ;
162
- const size = Buffer . byteLength ( body ) ;
163
- const events : Progress [ ] = [ ] ;
164
-
165
- await got . post ( { body} ) . on ( 'uploadProgress' , ( event : Progress ) => events . push ( event ) ) ;
166
-
167
- checkEvents ( t , events , size ) ;
168
- } ) ;
169
-
170
- test ( 'upload progress - stream with known body size' , withServer , async ( t , server , got ) => {
171
- server . post ( '/' , uploadEndpoint ) ;
172
-
173
- const events : Progress [ ] = [ ] ;
174
- const options = {
175
- headers : { 'content-length' : file . length . toString ( ) } ,
176
- } ;
177
-
178
- const request = got . stream . post ( options )
179
- . on ( 'uploadProgress' , event => events . push ( event ) ) ;
180
-
181
- await getStream (
182
- stream . pipeline ( toReadableStream ( file ) , request , ( ) => { } ) ,
183
- ) ;
184
-
185
- checkEvents ( t , events , file . length ) ;
186
- } ) ;
187
-
188
54
test ( 'upload progress - stream with unknown body size' , withServer , async ( t , server , got ) => {
189
55
server . post ( '/' , uploadEndpoint ) ;
190
56
@@ -200,24 +66,3 @@ test('upload progress - stream with unknown body size', withServer, async (t, se
200
66
t . is ( events [ 0 ] ?. total , undefined ) ;
201
67
checkEvents ( t , events ) ;
202
68
} ) ;
203
-
204
- test ( 'upload progress - no body' , withServer , async ( t , server , got ) => {
205
- server . post ( '/' , uploadEndpoint ) ;
206
-
207
- const events : Progress [ ] = [ ] ;
208
-
209
- await got . post ( '' ) . on ( 'uploadProgress' , ( event : Progress ) => events . push ( event ) ) ;
210
-
211
- t . deepEqual ( events , [
212
- {
213
- percent : 0 ,
214
- transferred : 0 ,
215
- total : undefined ,
216
- } ,
217
- {
218
- percent : 1 ,
219
- transferred : 0 ,
220
- total : 0 ,
221
- } ,
222
- ] ) ;
223
- } ) ;
0 commit comments