فهرست منبع

converted get stream to use knox, test to see if it is more robust

Henry Oswald 12 سال پیش
والد
کامیت
fada5ecaf4
2فایلهای تغییر یافته به همراه23 افزوده شده و 17 حذف شده
  1. 11 6
      services/filestore/app/coffee/s3Wrapper.coffee
  2. 12 11
      services/filestore/test/unit/coffee/s3WrapperTests.coffee

+ 11 - 6
services/filestore/app/coffee/s3Wrapper.coffee

@@ -8,7 +8,6 @@ knox = require("knox")
 path = require("path")
 LocalFileWriter = require("./LocalFileWriter")
 _ = require("underscore")
-	
 
 thirtySeconds = 30 * 1000
 
@@ -58,13 +57,19 @@ module.exports =
 				return callback(err)
 			@sendFileToS3 bucketName, key, fsPath, callback
 			
-	getFileStream: (bucketName, key, callback)->
+	getFileStream: (bucketName, key, callback = (err, res)->)->
 		logger.log bucketName:bucketName, key:key, "getting file from s3"
-		options = buildDefaultOptions(bucketName, "get", key)
-		readStream = request(options)
-		readStream.on "error", (err)->
+		s3Client = knox.createClient
+			key: settings.s3.key
+			secret: settings.s3.secret
+			bucket: bucketName
+		s3Stream = s3Client.get(key)
+		s3Stream.end()
+		s3Stream.on 'response', (res) ->
+			callback null, res
+		s3Stream.on 'error', (err) ->
 			logger.err err:err, bucketName:bucketName, key:key, "error getting file stream from s3"
-		callback null, readStream
+			callback err
 
 	copyFile: (bucketName, sourceKey, destKey, callback)->
 		logger.log bucketName:bucketName, sourceKey:sourceKey, destKey:destKey, "copying file in s3"

+ 12 - 11
services/filestore/test/unit/coffee/s3WrapperTests.coffee

@@ -20,6 +20,7 @@ describe "s3WrapperTests", ->
 			copyFile:sinon.stub()
 			list: sinon.stub()
 			deleteMultiple: sinon.stub()
+			get: sinon.stub()
 		@knox = 
 			createClient: sinon.stub().returns(@stubbedKnoxClient)
 		@LocalFileWriter = 
@@ -36,19 +37,19 @@ describe "s3WrapperTests", ->
 		@bucketName = "my-bucket"
 		@error = "my errror"
 
-	describe "Pipe to dest", ->
+	describe "getFileStream", ->
+		beforeEach ->
+			@s3Wrapper = SandboxedModule.require modulePath, requires: @requires
 
-		it "should use correct options", (done)->
 
-			stubbedReadStream = {on:->}
-			dest = {my:"object"}
-			@request = (opts)=>
-				return stubbedReadStream
-			@requires["request"] = @request
-			@s3Wrapper = SandboxedModule.require modulePath, requires: @requires
-			@s3Wrapper.getFileStream @bucketName, @key, (err, readStream)->
-				readStream.should.equal stubbedReadStream
-				done()
+		it "should use correct key", (done)->
+			@stubbedKnoxClient.get.returns(
+				on:->
+				end:->
+			)
+			@s3Wrapper.getFileStream @bucketName, @key, @fsPath, (err)=>
+			@stubbedKnoxClient.get.calledWith(@key).should.equal true 
+			done()
 
 	describe "sendFileToS3", ->