@@ -153,6 +153,88 @@ describe('S3Adapter tests', () => {
153153 } ) ;
154154 } ) ;
155155
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+
156238 describe ( 'getFileLocation' , ( ) => {
157239 var config = {
158240 mount : 'http://my.server.com/parse' ,
0 commit comments