@@ -153,6 +153,88 @@ describe('S3Adapter tests', () => {
153
153
} ) ;
154
154
} ) ;
155
155
156
+ describe ( 'getFileStream' , ( ) => {
157
+ it ( 'should handle range bytes' , ( ) => {
158
+ const s3 = new S3Adapter ( 'accessKey' , 'secretKey' , 'myBucket' ) ;
159
+ s3 . _s3Client = {
160
+ createBucket : callback => callback ( ) ,
161
+ getObject : ( params , callback ) => {
162
+ const { Range } = params ;
163
+
164
+ expect ( Range ) . toBe ( 'bytes=0-1' ) ;
165
+
166
+ const data = {
167
+ Body : Buffer . from ( 'hello world' , 'utf8' ) ,
168
+ } ;
169
+ callback ( null , data ) ;
170
+ } ,
171
+ } ;
172
+ const req = {
173
+ get : ( ) => 'bytes=0-1' ,
174
+ } ;
175
+ const resp = {
176
+ writeHead : jasmine . createSpy ( 'writeHead' ) ,
177
+ write : jasmine . createSpy ( 'write' ) ,
178
+ end : jasmine . createSpy ( 'end' ) ,
179
+ } ;
180
+ s3 . handleFileStream ( 'test.mov' , req , resp ) . then ( ( data ) => {
181
+ expect ( data . toString ( 'utf8' ) ) . toBe ( 'hello world' ) ;
182
+ expect ( resp . writeHead ) . toHaveBeenCalled ( ) ;
183
+ expect ( resp . write ) . toHaveBeenCalled ( ) ;
184
+ expect ( resp . end ) . toHaveBeenCalled ( ) ;
185
+ } ) ;
186
+ } ) ;
187
+
188
+ it ( 'should handle range bytes error' , ( ) => {
189
+ const s3 = new S3Adapter ( 'accessKey' , 'secretKey' , 'myBucket' ) ;
190
+ s3 . _s3Client = {
191
+ createBucket : callback => callback ( ) ,
192
+ getObject : ( params , callback ) => {
193
+ callback ( 'FileNotFound' , null ) ;
194
+ } ,
195
+ } ;
196
+ const req = {
197
+ get : ( ) => 'bytes=0-1' ,
198
+ } ;
199
+ const resp = {
200
+ writeHead : jasmine . createSpy ( 'writeHead' ) ,
201
+ write : jasmine . createSpy ( 'write' ) ,
202
+ end : jasmine . createSpy ( 'end' ) ,
203
+ } ;
204
+ s3 . handleFileStream ( 'test.mov' , req , resp ) . catch ( ( error ) => {
205
+ expect ( error ) . toBe ( 'FileNotFound' ) ;
206
+ expect ( resp . writeHead ) . not . toHaveBeenCalled ( ) ;
207
+ expect ( resp . write ) . not . toHaveBeenCalled ( ) ;
208
+ expect ( resp . end ) . not . toHaveBeenCalled ( ) ;
209
+ } ) ;
210
+ } ) ;
211
+
212
+ it ( 'should handle range bytes no data' , ( ) => {
213
+ const s3 = new S3Adapter ( 'accessKey' , 'secretKey' , 'myBucket' ) ;
214
+ const data = { Error : 'NoBody' } ;
215
+ s3 . _s3Client = {
216
+ createBucket : callback => callback ( ) ,
217
+ getObject : ( params , callback ) => {
218
+ callback ( null , data ) ;
219
+ } ,
220
+ } ;
221
+ const req = {
222
+ get : ( ) => 'bytes=0-1' ,
223
+ } ;
224
+ const resp = {
225
+ writeHead : jasmine . createSpy ( 'writeHead' ) ,
226
+ write : jasmine . createSpy ( 'write' ) ,
227
+ end : jasmine . createSpy ( 'end' ) ,
228
+ } ;
229
+ s3 . handleFileStream ( 'test.mov' , req , resp ) . catch ( ( error ) => {
230
+ expect ( error ) . toBe ( data ) ;
231
+ expect ( resp . writeHead ) . not . toHaveBeenCalled ( ) ;
232
+ expect ( resp . write ) . not . toHaveBeenCalled ( ) ;
233
+ expect ( resp . end ) . not . toHaveBeenCalled ( ) ;
234
+ } ) ;
235
+ } ) ;
236
+ } ) ;
237
+
156
238
describe ( 'getFileLocation' , ( ) => {
157
239
var config = {
158
240
mount : 'http://my.server.com/parse' ,
0 commit comments