mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
52 lines
1.6 KiB
CoffeeScript
52 lines
1.6 KiB
CoffeeScript
|
SandboxedModule = require('sandboxed-module')
|
||
|
assert = require('assert')
|
||
|
require('chai').should()
|
||
|
sinon = require('sinon')
|
||
|
modulePath = require('path').join __dirname, '../../../../app/js/Features/Dropbox/DropboxWebhookHandler.js'
|
||
|
|
||
|
describe 'DropboxWebhookHandler', ->
|
||
|
beforeEach ->
|
||
|
@DropboxWebhookHandler = SandboxedModule.require modulePath, requires:
|
||
|
"../../models/User": User: @User = {}
|
||
|
"../ThirdPartyDataStore/TpdsUpdateSender": @TpdsUpdateSender = {}
|
||
|
'logger-sharelatex':
|
||
|
log:->
|
||
|
err:->
|
||
|
@callback = sinon.stub()
|
||
|
|
||
|
describe "pollDropboxUids", ->
|
||
|
beforeEach (done) ->
|
||
|
@dropbox_uids = [
|
||
|
"123456",
|
||
|
"789123"
|
||
|
]
|
||
|
@DropboxWebhookHandler.pollDropboxUid = sinon.stub().callsArg(1)
|
||
|
@DropboxWebhookHandler.pollDropboxUids @dropbox_uids, done
|
||
|
|
||
|
it "should call pollDropboxUid for each uid", ->
|
||
|
for uid in @dropbox_uids
|
||
|
@DropboxWebhookHandler.pollDropboxUid
|
||
|
.calledWith(uid)
|
||
|
.should.equal true
|
||
|
|
||
|
describe "pollDropboxUid", ->
|
||
|
beforeEach ->
|
||
|
@dropbox_uid = "dropbox-123456"
|
||
|
@user_id = "sharelatex-user-id"
|
||
|
@User.find = sinon.stub().callsArgWith(1, null, [ _id: @user_id ])
|
||
|
@TpdsUpdateSender.pollDropboxForUser = sinon.stub().callsArg(1)
|
||
|
@DropboxWebhookHandler.pollDropboxUid @dropbox_uid, @callback
|
||
|
|
||
|
it "should look up the user", ->
|
||
|
@User.find
|
||
|
.calledWith({ "dropbox.access_token.uid": @dropbox_uid, "features.dropbox": true })
|
||
|
.should.equal true
|
||
|
|
||
|
it "should poll the user's Dropbox", ->
|
||
|
@TpdsUpdateSender.pollDropboxForUser
|
||
|
.calledWith(@user_id)
|
||
|
.should.equal true
|
||
|
|
||
|
it "should call the callback", ->
|
||
|
@callback.called.should.equal true
|