Merge pull request #1076 from sharelatex/ta-ui-error-handling

Management UI Error Handling

GitOrigin-RevId: a0567b5d54af3a8ca31f7e124c0c2d2d8d26b647
This commit is contained in:
Timothée Alby
2018-10-30 14:37:59 +00:00
committed by sharelatex
parent 8a6b7df071
commit 92582fdc38
7 changed files with 119 additions and 12 deletions
@@ -27,6 +27,7 @@ describe "UserMembershipController", ->
@AuthenticationController =
getSessionUser: sinon.stub().returns(@user)
getLoggedInUserId: sinon.stub().returns(@user._id)
@UserMembershipHandler =
getEntity: sinon.stub().yields(null, @subscription)
getUsers: sinon.stub().yields(null, @users)
@@ -110,6 +111,24 @@ describe "UserMembershipController", ->
expect(error).to.be.an.instanceof(Errors.NotFoundError)
done()
it 'handle user already added', (done) ->
@UserMembershipHandler.addUser.yields(alreadyAdded: true)
@UserMembershipController.add @req, status: () => json: (payload) =>
expect(payload.error.code).to.equal 'user_already_added'
done()
it 'handle user not found', (done) ->
@UserMembershipHandler.addUser.yields(userNotFound: true)
@UserMembershipController.add @req, status: () => json: (payload) =>
expect(payload.error.code).to.equal 'user_not_found'
done()
it 'handle invalid email', (done) ->
@req.body.email = 'not_valid_email'
@UserMembershipController.add @req, status: () => json: (payload) =>
expect(payload.error.code).to.equal 'invalid_email'
done()
describe 'remove', ->
beforeEach ->
@req.params.userId = @newUser._id
@@ -133,6 +152,18 @@ describe "UserMembershipController", ->
expect(error).to.be.an.instanceof(Errors.NotFoundError)
done()
it 'prevent self removal', (done) ->
@req.params.userId = @user._id
@UserMembershipController.remove @req, status: () => json: (payload) =>
expect(payload.error.code).to.equal 'managers_cannot_remove_self'
done()
it 'prevent admin removal', (done) ->
@UserMembershipHandler.removeUser.yields(isAdmin: true)
@UserMembershipController.remove @req, status: () => json: (payload) =>
expect(payload.error.code).to.equal 'managers_cannot_remove_admin'
done()
describe "exportCsv", ->
beforeEach ->
@@ -12,8 +12,8 @@ EntityConfigs = require("../../../../app/js/Features/UserMembership/UserMembersh
describe 'UserMembershipHandler', ->
beforeEach ->
@user = _id: 'mock-user-id'
@newUser = _id: 'mock-new-user-id', email: 'new-user-email@foo.bar'
@user = _id: ObjectId()
@newUser = _id: ObjectId(), email: 'new-user-email@foo.bar'
@fakeEntityId = ObjectId()
@subscription =
_id: 'mock-subscription-id'
@@ -133,7 +133,14 @@ describe 'UserMembershipHandler', ->
@UserGetter.getUserByAnyEmail.yields(null, null)
@UserMembershipHandler.addUser @institution, EntityConfigs.institution, @email, (error) =>
expect(error).to.exist
expect(error).to.be.an.instanceof(Errors.NotFoundError)
expect(error.userNotFound).to.equal true
done()
it 'handle user already added', (done) ->
@institution.managerIds.push(@newUser._id)
@UserMembershipHandler.addUser @institution, EntityConfigs.institution, @email, (error, users) =>
expect(error).to.exist
expect(error.alreadyAdded).to.equal true
done()
it 'add user to institution', (done) ->
@@ -153,3 +160,10 @@ describe 'UserMembershipHandler', ->
lastCall = @institution.update.lastCall
assertCalledWith(@institution.update, { $pull: managerIds: @newUser._id })
done()
it 'handle admin', (done) ->
@subscription.admin_id = @newUser._id
@UserMembershipHandler.removeUser @subscription, EntityConfigs.groupManagers, @newUser._id, (error, user) =>
expect(error).to.exist
expect(error.isAdmin).to.equal true
done()