From f866bd03bc3e9d2a181759754d35a9728b9d979f Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 22 Jul 2016 11:53:55 +0100 Subject: [PATCH] Spy on the randomBytes function --- .../CollaboratorsInviteHandlerTests.coffee | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee index 77c768cf47..d38d7a2a72 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee @@ -6,6 +6,7 @@ modulePath = "../../../../app/js/Features/Collaborators/CollaboratorsInviteHandl SandboxedModule = require('sandboxed-module') events = require "events" ObjectId = require("mongojs").ObjectId +Crypto = require('crypto') describe "CollaboratorsInviteHandler", -> beforeEach -> @@ -18,6 +19,7 @@ describe "CollaboratorsInviteHandler", -> save: sinon.stub() findOne: sinon.stub() @Project = {} + @Crypto = Crypto @CollaboratorsInviteHandler = SandboxedModule.require modulePath, requires: 'settings-sharelatex': @settings = {} 'logger-sharelatex': @logger = {err: sinon.stub(), error: sinon.stub(), log: sinon.stub()} @@ -25,6 +27,7 @@ describe "CollaboratorsInviteHandler", -> '../Contacts/ContactManager': @ContactManager = {} '../../models/Project': {Project: @Project} '../../models/ProjectInvite': {ProjectInvite: @ProjectInvite} + 'crypto': @Crypto @projectId = ObjectId() @sendingUserId = ObjectId() @@ -36,10 +39,14 @@ describe "CollaboratorsInviteHandler", -> beforeEach -> @ProjectInvite::save = sinon.spy (cb) -> cb(null, this) + @randomBytesSpy = sinon.spy(@Crypto, 'randomBytes') @CollaboratorsEmailHandler.notifyUserOfProjectInvite = sinon.stub() @call = (callback) => @CollaboratorsInviteHandler.inviteToProject @projectId, @sendingUserId, @email, @privileges, callback + afterEach -> + @randomBytesSpy.restore() + describe 'when all goes well', -> beforeEach -> @@ -57,6 +64,11 @@ describe "CollaboratorsInviteHandler", -> expect(invite).to.have.all.keys ['_id', 'email', 'token', 'sendingUserId', 'projectId', 'privileges'] done() + it 'should have generated a random token', (done) -> + @call (err, invite) => + @randomBytesSpy.callCount.should.equal 1 + done() + it 'should have called ProjectInvite.save', (done) -> @call (err, invite) => @ProjectInvite::save.callCount.should.equal 1