From 15c6e49d1ae9009d04b12fd3792d56269a96167f Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Sun, 13 Mar 2016 22:24:39 +0000 Subject: [PATCH] if user changes email then check if they have a site licence --- .../app/coffee/Features/User/UserController.coffee | 12 ++++++++++-- .../web/app/coffee/Features/User/UserHandler.coffee | 4 ++-- .../UnitTests/coffee/User/UserControllerTests.coffee | 12 +++++++++++- .../UnitTests/coffee/User/UserHandlerTests.coffee | 8 ++++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index f0ccbde89d..451729d7e9 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -1,3 +1,4 @@ +UserHandler = require("./UserHandler") UserDeleter = require("./UserDeleter") UserLocator = require("./UserLocator") User = require("../../models/User").User @@ -10,7 +11,7 @@ AuthenticationManager = require("../Authentication/AuthenticationManager") UserUpdater = require("./UserUpdater") settings = require "settings-sharelatex" -module.exports = +module.exports = UserController = deleteUser: (req, res)-> user_id = req.session.user._id @@ -67,7 +68,14 @@ module.exports = else message = req.i18n.translate("problem_changing_email_address") return res.send 500, {message:message} - res.sendStatus(200) + User.findById user_id, (err, user)-> + if err? + logger.err err:err, user_id:user_id, "error getting user for email update" + return res.send 500 + UserHandler.populateGroupLicenceInvite user, (err)-> #need to refresh this in the background + if err? + logger.err err:err, "error populateGroupLicenceInvite" + res.sendStatus(200) logout : (req, res)-> metrics.inc "user.logout" diff --git a/services/web/app/coffee/Features/User/UserHandler.coffee b/services/web/app/coffee/Features/User/UserHandler.coffee index 81b94d834f..3b226e1228 100644 --- a/services/web/app/coffee/Features/User/UserHandler.coffee +++ b/services/web/app/coffee/Features/User/UserHandler.coffee @@ -6,7 +6,7 @@ logger = require("logger-sharelatex") module.exports = UserHandler = - _populateGroupLicenceInvite: (user, callback)-> + populateGroupLicenceInvite: (user, callback)-> licence = SubscriptionDomainHandler.getLicenceUserCanJoin user if !licence? return callback() @@ -21,5 +21,5 @@ module.exports = UserHandler = NotificationsBuilder.groupPlan(user, licence).create(callback) setupLoginData: (user, callback = ->)-> - @_populateGroupLicenceInvite user, callback + @populateGroupLicenceInvite user, callback diff --git a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee index bd328eeaaf..829cbf17fb 100644 --- a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee @@ -42,6 +42,8 @@ describe "UserController", -> changeEmailAddress:sinon.stub() @settings = siteUrl: "sharelatex.example.com" + @UserHandler = + populateGroupLicenceInvite:sinon.stub().callsArgWith(1) @UserController = SandboxedModule.require modulePath, requires: "./UserLocator": @UserLocator "./UserDeleter": @UserDeleter @@ -53,6 +55,7 @@ describe "UserController", -> "../Authentication/AuthenticationManager": @AuthenticationManager "../Referal/ReferalAllocator":@ReferalAllocator "../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler + "./UserHandler":@UserHandler "settings-sharelatex": @settings "logger-sharelatex": {log:->} "../../infrastructure/Metrics": inc:-> @@ -151,7 +154,14 @@ describe "UserController", -> done() @UserController.updateUserSettings @req, @res - + it "should call populateGroupLicenceInvite", (done)-> + @req.body.email = @newEmail.toUpperCase() + @UserUpdater.changeEmailAddress.callsArgWith(2) + @res.sendStatus = (code)=> + code.should.equal 200 + @UserHandler.populateGroupLicenceInvite.calledWith(@user).should.equal true + done() + @UserController.updateUserSettings @req, @res describe "logout", -> diff --git a/services/web/test/UnitTests/coffee/User/UserHandlerTests.coffee b/services/web/test/UnitTests/coffee/User/UserHandlerTests.coffee index 8e463c69eb..8bccd1b12c 100644 --- a/services/web/test/UnitTests/coffee/User/UserHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserHandlerTests.coffee @@ -29,12 +29,12 @@ describe "UserHandler", -> "../Subscription/SubscriptionDomainHandler":@SubscriptionDomainHandler "../Subscription/SubscriptionGroupHandler":@SubscriptionGroupHandler - describe "_populateGroupLicenceInvite", -> + describe "populateGroupLicenceInvite", -> describe "no licence", -> beforeEach (done)-> @SubscriptionDomainHandler.getLicenceUserCanJoin.returns() - @UserHandler._populateGroupLicenceInvite @user, done + @UserHandler.populateGroupLicenceInvite @user, done it "should not call NotificationsBuilder", (done)-> @NotificationsBuilder.groupPlan.called.should.equal false @@ -49,7 +49,7 @@ describe "UserHandler", -> beforeEach (done)-> @SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence) @SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, false) - @UserHandler._populateGroupLicenceInvite @user, done + @UserHandler.populateGroupLicenceInvite @user, done it "should create notifcation", (done)-> @NotificationsBuilder.groupPlan.calledWith(@user, @licence).should.equal true @@ -62,7 +62,7 @@ describe "UserHandler", -> beforeEach (done)-> @SubscriptionDomainHandler.getLicenceUserCanJoin.returns(@licence) @SubscriptionGroupHandler.isUserPartOfGroup.callsArgWith(2, null, true) - @UserHandler._populateGroupLicenceInvite @user, done + @UserHandler.populateGroupLicenceInvite @user, done it "should create notifcation", (done)-> @NotificationsBuilder.groupPlan.called.should.equal false