|
|
@@ -58,7 +58,12 @@ describe('AuthorizationManager', function () {
|
|
|
.resolves({ metadata: { user_id: new ObjectId() } }),
|
|
|
},
|
|
|
}
|
|
|
-
|
|
|
+ this.Modules = { promises: { hooks: { fire: sinon.stub() } } }
|
|
|
+ this.settings = {
|
|
|
+ passwordStrengthOptions: {},
|
|
|
+ adminPrivilegeAvailable: true,
|
|
|
+ adminRolesEnabled: false,
|
|
|
+ }
|
|
|
this.AuthorizationManager = SandboxedModule.require(modulePath, {
|
|
|
requires: {
|
|
|
'mongodb-legacy': { ObjectId },
|
|
|
@@ -69,10 +74,8 @@ describe('AuthorizationManager', function () {
|
|
|
'../TokenAccess/TokenAccessHandler': this.TokenAccessHandler,
|
|
|
'../DocumentUpdater/DocumentUpdaterHandler':
|
|
|
this.DocumentUpdaterHandler,
|
|
|
- '@overleaf/settings': {
|
|
|
- passwordStrengthOptions: {},
|
|
|
- adminPrivilegeAvailable: true,
|
|
|
- },
|
|
|
+ '../../infrastructure/Modules': this.Modules,
|
|
|
+ '@overleaf/settings': this.settings,
|
|
|
},
|
|
|
})
|
|
|
})
|
|
|
@@ -678,6 +681,36 @@ function testPermission(permission, privilegeLevels) {
|
|
|
})
|
|
|
expectPermission(permission, privilegeLevels.siteAdmin || false)
|
|
|
})
|
|
|
+ describe('admin without permissions', function () {
|
|
|
+ beforeEach(function () {
|
|
|
+ this.user.isAdmin = true
|
|
|
+ this.settings.adminRolesEnabled = true
|
|
|
+ this.Modules.promises.hooks.fire
|
|
|
+ .withArgs('getAdminCapabilities')
|
|
|
+ .resolves([])
|
|
|
+ })
|
|
|
+ expectPermission(permission, false)
|
|
|
+ })
|
|
|
+ describe('admin with `view-project`', function () {
|
|
|
+ beforeEach(function () {
|
|
|
+ this.user.isAdmin = true
|
|
|
+ this.settings.adminRolesEnabled = true
|
|
|
+ this.Modules.promises.hooks.fire
|
|
|
+ .withArgs('getAdminCapabilities')
|
|
|
+ .resolves([['view-project']])
|
|
|
+ })
|
|
|
+ expectPermission(permission, privilegeLevels.readOnly || false)
|
|
|
+ })
|
|
|
+ describe('admin with `modify-project`', function () {
|
|
|
+ beforeEach(function () {
|
|
|
+ this.user.isAdmin = true
|
|
|
+ this.settings.adminRolesEnabled = true
|
|
|
+ this.Modules.promises.hooks.fire
|
|
|
+ .withArgs('getAdminCapabilities')
|
|
|
+ .resolves([['view-project', 'modify-project']])
|
|
|
+ })
|
|
|
+ expectPermission(permission, privilegeLevels.siteAdmin || false)
|
|
|
+ })
|
|
|
|
|
|
describe('when user is owner', function () {
|
|
|
setupUserPrivilegeLevel(PrivilegeLevels.OWNER)
|