MongoAWS.coffee 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. chai = require('chai')
  2. chai.should()
  3. sinon = require("sinon")
  4. modulePath = "../../../../app/js/MongoAWS.js"
  5. SandboxedModule = require('sandboxed-module')
  6. {ObjectId} = require("mongojs")
  7. MemoryStream = require('memorystream')
  8. zlib = require "zlib"
  9. describe "MongoAWS", ->
  10. beforeEach ->
  11. @MongoAWS = SandboxedModule.require modulePath, requires:
  12. "settings-sharelatex": @settings =
  13. trackchanges:
  14. s3:
  15. secret: "s3-secret"
  16. key: "s3-key"
  17. stores:
  18. doc_history: "s3-bucket"
  19. "child_process": @child_process = {}
  20. "mongo-uri": @mongouri = {}
  21. "logger-sharelatex": @logger = {log: sinon.stub(), error: sinon.stub(), err:->}
  22. "aws-sdk": @awssdk = {}
  23. "fs": @fs = {}
  24. "s3-streams": @S3S = {}
  25. "./mongojs" : { db: @db = {}, ObjectId: ObjectId }
  26. "JSONStream": @JSONStream = {}
  27. "readline-stream": @readline = sinon.stub()
  28. 'metrics-sharelatex': {inc: ()->}
  29. @project_id = ObjectId().toString()
  30. @doc_id = ObjectId().toString()
  31. @pack_id = ObjectId()
  32. @update = { v:123 }
  33. @callback = sinon.stub()
  34. describe "archivePack", ->
  35. beforeEach (done) ->
  36. @awssdk.config = { update: sinon.stub() }
  37. @awssdk.S3 = sinon.stub()
  38. @S3S.WriteStream = () ->
  39. MemoryStream.createWriteStream()
  40. @db.docHistory = {}
  41. @db.docHistory.findOne = sinon.stub().callsArgWith(1, null, {"pack":"hello"})
  42. @MongoAWS.archivePack @project_id, @doc_id, @pack_id, (err, result) =>
  43. @callback()
  44. done()
  45. it "should call the callback", ->
  46. @callback.called.should.equal true
  47. describe "unArchivePack", ->
  48. beforeEach (done) ->
  49. zlib.gzip '{"pack":"123"}', (err, zbuf) =>
  50. @awssdk.config = { update: sinon.stub() }
  51. @awssdk.S3 = sinon.stub()
  52. @S3S.ReadStream = () ->
  53. MemoryStream.createReadStream(zbuf, {readable:true})
  54. @db.docHistory = {}
  55. @db.docHistory.insert = sinon.stub().callsArgWith(1, null, "pack")
  56. @MongoAWS.unArchivePack @project_id, @doc_id, @pack_id, (err, result) =>
  57. @callback()
  58. done()
  59. it "should call db.docHistory.insert", ->
  60. @db.docHistory.insert.called.should.equal true