DocArchiveManager.coffee 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. assert = require("chai").assert
  2. sinon = require('sinon')
  3. chai = require('chai')
  4. should = chai.should()
  5. expect = chai.expect
  6. modulePath = "../../../app/js/DocArchiveManager.js"
  7. SandboxedModule = require('sandboxed-module')
  8. ObjectId = require("mongojs").ObjectId
  9. Errors = require "../../../app/js/Errors"
  10. describe "DocArchiveManager", ->
  11. beforeEach ->
  12. @settings =
  13. filestore:
  14. backend: "s3"
  15. s3:
  16. secret: "secret"
  17. key: "this_key"
  18. stores:
  19. user_files:"sl_user_files"
  20. @request =
  21. put: sinon.stub().callsArgWith(1, null, statusCode:200)
  22. @MongoManager =
  23. markDocAsArchived: sinon.stub().callsArgWith(2, null)
  24. upsertIntoDocCollection: sinon.stub()
  25. @DocArchiveManager = SandboxedModule.require modulePath, requires:
  26. "settings-sharelatex": @settings
  27. "./MongoManager": @MongoManager
  28. "request": @request
  29. "logger-sharelatex":
  30. log:->
  31. err:->
  32. @key = "my/key"
  33. @bucketName = "my-bucket"
  34. @error = "my errror"
  35. @docs = [{
  36. _id: ObjectId()
  37. lines: ["one", "two", "three"]
  38. rev: 2
  39. }, {
  40. _id: ObjectId()
  41. lines: ["aaa", "bbb", "ccc"]
  42. rev: 4
  43. }, {
  44. _id: ObjectId()
  45. lines: ["111", "222", "333"]
  46. rev: 6
  47. }]
  48. @project_id = ObjectId().toString()
  49. @callback = sinon.stub()
  50. @stubbedError = new Error("blew up")
  51. describe "archiveDoc", ->
  52. it "should use correct options", (done)->
  53. @DocArchiveManager.archiveDoc @project_id, @docs[0], (err)=>
  54. opts = @request.put.args[0][0]
  55. assert.deepEqual(opts.aws, {key:@settings.filestore.s3.key, secret:@settings.filestore.s3.secret, bucket:@settings.filestore.stores.user_files})
  56. opts.json.should.equal @docs[0].lines
  57. opts.timeout.should.equal (30*1000)
  58. opts.uri.should.equal "https://#{@settings.filestore.stores.user_files}.s3.amazonaws.com/#{@project_id}/#{@docs[0]._id}"
  59. done()