diff --git a/services/track-changes/package.json b/services/track-changes/package.json index be0c3487a0..cc2a0bc105 100644 --- a/services/track-changes/package.json +++ b/services/track-changes/package.json @@ -39,6 +39,7 @@ "bunyan": "~0.22.1", "grunt-bunyan": "~0.5.0", "grunt-forever": "~0.4.2", - "timekeeper": "0.0.4" + "timekeeper": "0.0.4", + "memorystream": "0.3.1" } } diff --git a/services/track-changes/test/unit/coffee/DocArchive/MongoAWS.coffee b/services/track-changes/test/unit/coffee/DocArchive/MongoAWS.coffee index dd285075a0..6c3cf774a9 100644 --- a/services/track-changes/test/unit/coffee/DocArchive/MongoAWS.coffee +++ b/services/track-changes/test/unit/coffee/DocArchive/MongoAWS.coffee @@ -4,6 +4,8 @@ sinon = require("sinon") modulePath = "../../../../app/js/MongoAWS.js" SandboxedModule = require('sandboxed-module') {ObjectId} = require("mongojs") +MemoryStream = require('memorystream') +zlib = require "zlib" describe "MongoAWS", -> beforeEach -> @@ -20,95 +22,47 @@ describe "MongoAWS", -> "logger-sharelatex": @logger = {log: sinon.stub(), error: sinon.stub(), err:->} "aws-sdk": @awssdk = {} "fs": @fs = {} - "s3-streams": @s3streams = {} + "s3-streams": @S3S = {} "./mongojs" : { db: @db = {}, ObjectId: ObjectId } "JSONStream": @JSONStream = {} "readline-stream": @readline = sinon.stub() @project_id = ObjectId().toString() @doc_id = ObjectId().toString() + @pack_id = ObjectId() @update = { v:123 } @callback = sinon.stub() - - # describe "archiveDocHistory", -> - # beforeEach -> - # @awssdk.config = { update: sinon.stub() } - # @awssdk.S3 = sinon.stub() - # @s3streams.WriteStream = sinon.stub() - # @db.docHistory = {} - # @db.docHistory.on = sinon.stub() - # @db.docHistory.find = sinon.stub().returns @db.docHistory - # @db.docHistory.on.returns - # pipe:-> - # pipe:-> - # on: (type, cb)-> - # on: (type, cb)-> - # cb() - # @JSONStream.stringify = sinon.stub() + describe "archivePack", -> - # @MongoAWS.archiveDocHistory @project_id, @doc_id, @update, @callback + beforeEach (done) -> + @awssdk.config = { update: sinon.stub() } + @awssdk.S3 = sinon.stub() + @S3S.WriteStream = MemoryStream.createWriteStream + @db.docHistory = {} + @db.docHistory.findOne = sinon.stub().callsArgWith(1, null, {"pack":"hello"}) - # it "should call the callback", -> - # @callback.called.should.equal true + @MongoAWS.archivePack @project_id, @doc_id, @pack_id, (err, result) => + @callback() + done() - # describe "unArchiveDocHistory", -> + it "should call the callback", -> + @callback.called.should.equal true - # beforeEach -> - # @awssdk.config = { update: sinon.stub() } - # @awssdk.S3 = sinon.stub() - # @s3streams.ReadStream = sinon.stub() + describe "unArchivePack", -> - # @s3streams.ReadStream.returns - # #describe on 'open' behavior - # on: (type, cb)-> - # #describe on 'error' behavior - # on: (type, cb)-> - # pipe:-> - # #describe on 'data' behavior - # on: (type, cb)-> - # cb([]) - # #describe on 'end' behavior - # on: (type, cb)-> - # cb() - # #describe on 'error' behavior - # on: sinon.stub() + beforeEach (done) -> + zlib.gzip '{"pack":"123"}', (err, zbuf) => + @awssdk.config = { update: sinon.stub() } + @awssdk.S3 = sinon.stub() + @S3S.ReadStream = () -> + MemoryStream.createReadStream(zbuf, {readable:true}) + @db.docHistory = {} + @db.docHistory.insert = sinon.stub().callsArgWith(1, null, "pack") - # @MongoAWS.handleBulk = sinon.stub() - # @MongoAWS.unArchiveDocHistory @project_id, @doc_id, @callback - - # it "should call handleBulk", -> - # @MongoAWS.handleBulk.called.should.equal true - - # describe "handleBulk", -> - # beforeEach -> - # @bulkOps = [{ - # _id: ObjectId() - # doc_id: ObjectId() - # project_id: ObjectId() - # }, { - # _id: ObjectId() - # doc_id: ObjectId() - # project_id: ObjectId() - # }, { - # _id: ObjectId() - # doc_id: ObjectId() - # project_id: ObjectId() - # }] - # @bulk = - # find: sinon.stub().returns - # upsert: sinon.stub().returns - # updateOne: sinon.stub() - # execute: sinon.stub().callsArgWith(0, null, {}) - # @db.docHistory = {} - # @db.docHistory.initializeUnorderedBulkOp = sinon.stub().returns @bulk - # @MongoAWS.handleBulk @bulkOps, @bulkOps.length, @callback - - # it "should call updateOne for each operation", -> - # @bulk.find.calledWith({_id:@bulkOps[0]._id}).should.equal true - # @bulk.find.calledWith({_id:@bulkOps[1]._id}).should.equal true - # @bulk.find.calledWith({_id:@bulkOps[2]._id}).should.equal true - - # it "should call the callback", -> - # @callback.calledWith(null).should.equal true + @MongoAWS.unArchivePack @project_id, @doc_id, @pack_id, (err, result) => + @callback() + done() + it "should call db.docHistory.insert", -> + @db.docHistory.insert.called.should.equal true