DropboxWebhookHandlerTests.coffee 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. SandboxedModule = require('sandboxed-module')
  2. assert = require('assert')
  3. require('chai').should()
  4. sinon = require('sinon')
  5. modulePath = require('path').join __dirname, '../../../../app/js/Features/Dropbox/DropboxWebhookHandler.js'
  6. describe 'DropboxWebhookHandler', ->
  7. beforeEach ->
  8. @DropboxWebhookHandler = SandboxedModule.require modulePath, requires:
  9. "../../models/User": User: @User = {}
  10. "../ThirdPartyDataStore/TpdsUpdateSender": @TpdsUpdateSender = {}
  11. 'logger-sharelatex':
  12. log:->
  13. err:->
  14. @callback = sinon.stub()
  15. describe "pollDropboxUids", ->
  16. beforeEach (done) ->
  17. @dropbox_uids = [
  18. "123456",
  19. "789123"
  20. ]
  21. @DropboxWebhookHandler.pollDropboxUid = sinon.stub().callsArg(1)
  22. @DropboxWebhookHandler.pollDropboxUids @dropbox_uids, done
  23. it "should call pollDropboxUid for each uid", ->
  24. for uid in @dropbox_uids
  25. @DropboxWebhookHandler.pollDropboxUid
  26. .calledWith(uid)
  27. .should.equal true
  28. describe "pollDropboxUid", ->
  29. beforeEach ->
  30. @dropbox_uid = "dropbox-123456"
  31. @user_id = "sharelatex-user-id"
  32. @User.find = sinon.stub().callsArgWith(1, null, [ _id: @user_id ])
  33. @TpdsUpdateSender.pollDropboxForUser = sinon.stub().callsArg(1)
  34. @DropboxWebhookHandler.pollDropboxUid @dropbox_uid, @callback
  35. it "should look up the user", ->
  36. @User.find
  37. .calledWith({ "dropbox.access_token.uid": @dropbox_uid, "features.dropbox": true })
  38. .should.equal true
  39. it "should poll the user's Dropbox", ->
  40. @TpdsUpdateSender.pollDropboxForUser
  41. .calledWith(@user_id)
  42. .should.equal true
  43. it "should call the callback", ->
  44. @callback.called.should.equal true