mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
113 lines
3.1 KiB
CoffeeScript
113 lines
3.1 KiB
CoffeeScript
chai = require('chai')
|
|
chai.should()
|
|
sinon = require("sinon")
|
|
modulePath = "../../../../app/js/MongoAWS.js"
|
|
SandboxedModule = require('sandboxed-module')
|
|
{ObjectId} = require("mongojs")
|
|
|
|
describe "MongoAWS", ->
|
|
beforeEach ->
|
|
@MongoAWS = SandboxedModule.require modulePath, requires:
|
|
"settings-sharelatex": @settings =
|
|
filestore:
|
|
s3:
|
|
secret: "s3-secret"
|
|
key: "s3-key"
|
|
stores:
|
|
user_files: "s3-bucket"
|
|
"child_process": @child_process = {}
|
|
"mongo-uri": @mongouri = {}
|
|
"logger-sharelatex": @logger = {log: sinon.stub(), error: sinon.stub(), err:->}
|
|
"aws-sdk": @awssdk = {}
|
|
"fs": @fs = {}
|
|
"s3-streams": @s3streams = {}
|
|
"./mongojs" : { db: @db = {}, ObjectId: ObjectId }
|
|
"JSONStream": @JSONStream = {}
|
|
"readline-stream": @readline = sinon.stub()
|
|
|
|
@project_id = ObjectId().toString()
|
|
@doc_id = ObjectId().toString()
|
|
@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()
|
|
|
|
@MongoAWS.archiveDocHistory @project_id, @doc_id, @callback
|
|
|
|
it "should call the callback", ->
|
|
@callback.called.should.equal true
|
|
|
|
describe "unArchiveDocHistory", ->
|
|
|
|
beforeEach ->
|
|
@awssdk.config = { update: sinon.stub() }
|
|
@awssdk.S3 = sinon.stub()
|
|
@s3streams.ReadStream = sinon.stub()
|
|
|
|
@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()
|
|
|
|
@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
|
|
|