From bcfc1bee0c88b24f8ade48d674589611870db9a3 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 9 Apr 2014 15:41:19 +0100 Subject: [PATCH] moved unsubscribe endpoint to new user controller --- .../Features/User/UserController.coffee | 9 +++++- .../coffee/controllers/UserController.coffee | 16 +---------- services/web/app/coffee/router.coffee | 2 +- .../coffee/User/UserControllerTests.coffee | 28 +++++++++++++++---- .../User/UserPagesControllerTests.coffee | 3 +- 5 files changed, 34 insertions(+), 24 deletions(-) diff --git a/services/web/app/coffee/Features/User/UserController.coffee b/services/web/app/coffee/Features/User/UserController.coffee index 86b356ee84..373b9278a3 100644 --- a/services/web/app/coffee/Features/User/UserController.coffee +++ b/services/web/app/coffee/Features/User/UserController.coffee @@ -1,4 +1,6 @@ UserDeleter = require("./UserDeleter") +UserLocator = require("./UserLocator") +newsLetterManager = require('../Newsletter/NewsletterManager') module.exports = @@ -7,4 +9,9 @@ module.exports = UserDeleter.deleteUser user_id, (err)-> if !err? req.session.destroy() - res.send(200) \ No newline at end of file + res.send(200) + + unsubscribe: (req, res)-> + UserLocator.findById req.session.user._id, (err, user)-> + newsLetterManager.unsubscribe user, -> + res.send() \ No newline at end of file diff --git a/services/web/app/coffee/controllers/UserController.coffee b/services/web/app/coffee/controllers/UserController.coffee index fc60379cab..c6ac5a5ae5 100644 --- a/services/web/app/coffee/controllers/UserController.coffee +++ b/services/web/app/coffee/controllers/UserController.coffee @@ -5,7 +5,6 @@ _ = require('underscore') logger = require('logger-sharelatex') Security = require('../managers/SecurityManager') Settings = require('settings-sharelatex') -newsLetterManager = require('../Features/Newsletter/NewsletterManager') dropboxHandler = require('../Features/Dropbox/DropboxHandler') userRegistrationHandler = require('../Features/User/UserRegistrationHandler') metrics = require('../infrastructure/Metrics') @@ -106,10 +105,7 @@ module.exports = res.redirect '/login' - unsubscribe: (req, res)-> - User.findById req.session.user._id, (err, user)-> - newsLetterManager.unsubscribe user, -> - res.send() + apiUpdate : (req, res)-> logger.log user: req.session.user, "updating account settings" @@ -158,13 +154,3 @@ module.exports = text:'Your old password is wrong' - - deleteUser: (req, res)-> - user_id = req.session.user._id - UserDeleter.deleteUser user_id, (err)-> - if !err? - req.session.destroy() - res.send(200) - - - diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 50c9c9813c..f1bf6f586c 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -80,7 +80,7 @@ module.exports = class Router app.post '/user/password/update', AuthenticationController.requireLogin(), UserController.changePassword app.get '/user/passwordreset', UserPagesController.passwordResetPage app.post '/user/passwordReset', UserController.doRequestPasswordReset - app.del '/user/newsletter/unsubscribe', AuthenticationController.requireLogin(), UserController.unsubscribe + app.del '/user/newsletter/unsubscribe', AuthenticationController.requireLogin(), UserController_new.unsubscribe app.del '/user', AuthenticationController.requireLogin(), UserController_new.deleteUser app.get '/dropbox/beginAuth', DropboxUserController.redirectUserToDropboxAuth diff --git a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee index 0254d49831..e9952d21b6 100644 --- a/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserControllerTests.coffee @@ -11,28 +11,46 @@ ObjectId = require("mongojs").ObjectId describe "UserController", -> beforeEach -> + @user = + _id:"!@£!23123" @UserDeleter = deleteUser: sinon.stub().callsArgWith(1) + @UserLocator = + findById: sinon.stub().callsArgWith(1, null, @user) + @NewsLetterManager = + unsubscribe: sinon.stub().callsArgWith(1) @UserController = SandboxedModule.require modulePath, requires: "./UserDeleter": @UserDeleter + "./UserLocator": @UserLocator + '../Newsletter/NewsletterManager':@NewsLetterManager "logger-sharelatex": {log:->} @req = new MockRequest() @res = new MockResponse() @next = sinon.stub() - + @user_id = "323123" + @req.session.user = + _id = @user_id describe "deleteUser", -> it "should delete the user", (done)-> - user_id = "323123" - @req.session.user = - _id = user_id + @res.send = (code)=> - @UserDeleter.deleteUser.calledWith(user_id) + @UserDeleter.deleteUser.calledWith(@user_id) code.should.equal 200 done() @UserController.deleteUser @req, @res + describe "unsubscribe", -> + + it "should send the user to unsubscribe", (done)-> + + @res.send = (code)=> + @NewsLetterManager.unsubscribe.calledWith(@user).should.equal true + done() + @UserController.unsubscribe @req, @res + + diff --git a/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee index 994d20dc2e..5a0b2789f5 100644 --- a/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserPagesControllerTests.coffee @@ -14,8 +14,7 @@ describe "UserPagesController", -> @user = _id:"kwjewkl" features:{} - @UserDeleter = - deleteUser: sinon.stub().callsArgWith(1) + @UserLocator = findById: sinon.stub().callsArgWith(1, null, @user) @dropboxStatus = {}