Merge pull request #1076 from sharelatex/ta-ui-error-handling
Management UI Error Handling GitOrigin-RevId: a0567b5d54af3a8ca31f7e124c0c2d2d8d26b647
This commit is contained in:
committed by
sharelatex
parent
8a6b7df071
commit
92582fdc38
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user