Просмотр исходного кода

start tests for invite controller

Shane Kilkelly 10 лет назад
Родитель
Сommit
23a9aadba5

+ 11 - 0
services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee

@@ -1,3 +1,14 @@
+UserCreator = require('../User/UserCreator')
+Project = require("../../models/Project").Project
+mimelib = require("mimelib")
+logger = require('logger-sharelatex')
+UserGetter = require "../User/UserGetter"
+ContactManager = require "../Contacts/ContactManager"
+CollaboratorsEmailHandler = require "./CollaboratorsEmailHandler"
+Async = require "async"
+PrivilegeLevels = require "../Authorization/PrivilegeLevels"
+Errors = require "../Errors/Errors"
+
 module.experts = CollaboratorsInviteHandler =
 
 	inviteToProject: (projectId, sendingUserId, email, priveleges, callback=(err,invite)->) ->

+ 57 - 0
services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee

@@ -0,0 +1,57 @@
+sinon = require('sinon')
+chai = require('chai')
+should = chai.should()
+expect = chai.expect
+modulePath = "../../../../app/js/Features/Collaborators/CollaboratorsInviteController.js"
+SandboxedModule = require('sandboxed-module')
+events = require "events"
+MockRequest = require "../helpers/MockRequest"
+MockResponse = require "../helpers/MockResponse"
+ObjectId = require("mongojs").ObjectId
+
+describe "CollaboratorsInviteController", ->
+	beforeEach ->
+		@CollaboratorsInviteController = SandboxedModule.require modulePath, requires:
+			"../Project/ProjectGetter": @ProjectGetter = {}
+			"./CollaboratorsInviteHandler": @CollaboratorsInviteHandler = {}
+			"../Editor/EditorRealTimeController": @EditorRealTimeController = {}
+			'../Subscription/LimitationsManager' : @LimitationsManager = {}
+			'../Project/ProjectEditorHandler' : @ProjectEditorHandler = {}
+			'../User/UserGetter': @UserGetter = {}
+		@res = new MockResponse()
+		@req = new MockRequest()
+
+		@project_id = "project-id-123"
+		@callback = sinon.stub()
+
+	describe "viewInvite", ->
+
+		beforeEach ->
+			@req.params =
+				Project_id: @project_id
+				token: "some-opaque-token"
+			@req.session =
+				user: _id: @current_user_id = "current-user-id"
+			@res.render = sinon.stub()
+			@invite = {
+				_id: ObjectId(),
+				token: "htnseuthaouse",
+				sendingUserId: ObjectId(),
+				projectId: @projectId,
+				targetEmail: 'user@example.com'
+				createdAt: new Date(),
+				expiresAt: new Date()
+			}
+			@CollaboratorsInviteHandler.getInviteByToken = sinon.stub().callsArgWith(2, null, @invite)
+			@callback = sinon.stub()
+			@next = sinon.stub()
+
+		describe 'when the token is valid', ->
+
+			beforeEach ->
+				@CollaboratorsInviteHandler.getInviteByToken.callsArgWith(2, null, @invite)
+				@CollaboratorsInviteController.viewInvite @req, @res, @next
+
+			it 'should render the view template', ->
+				@res.render.callCount.should.equal 1
+				@res.render.firstCall.args[0].should.equal 'project/invite'