mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 14:13:43 +01:00
Merge pull request #2560 from overleaf/ta-group-admin-no-features
Don't Give Features To Group Admins GitOrigin-RevId: 3588aff773bdc4cf18d18ce52f2c1b73462d806e
This commit is contained in:
@@ -94,7 +94,7 @@ const FeaturesUpdater = {
|
||||
},
|
||||
|
||||
_getIndividualFeatures(userId, callback) {
|
||||
SubscriptionLocator.getUsersSubscription(userId, (err, sub) =>
|
||||
SubscriptionLocator.getUserIndividualSubscription(userId, (err, sub) =>
|
||||
callback(err, FeaturesUpdater._subscriptionToFeatures(sub))
|
||||
)
|
||||
},
|
||||
|
||||
@@ -31,6 +31,17 @@ const SubscriptionLocator = {
|
||||
})
|
||||
},
|
||||
|
||||
getUserIndividualSubscription(user_or_id, callback) {
|
||||
const user_id = SubscriptionLocator._getUserId(user_or_id)
|
||||
return Subscription.findOne(
|
||||
{ admin_id: user_id, groupPlan: false },
|
||||
function(err, subscription) {
|
||||
logger.log({ user_id }, 'got users individual subscription')
|
||||
return callback(err, subscription)
|
||||
}
|
||||
)
|
||||
},
|
||||
|
||||
findManagedSubscription(managerId, callback) {
|
||||
return Subscription.findOne({ manager_ids: managerId }, callback)
|
||||
},
|
||||
@@ -107,6 +118,9 @@ const SubscriptionLocator = {
|
||||
|
||||
SubscriptionLocator.promises = {
|
||||
getUsersSubscription: promisify(SubscriptionLocator.getUsersSubscription),
|
||||
getUserIndividualSubscription: promisify(
|
||||
SubscriptionLocator.getUserIndividualSubscription
|
||||
),
|
||||
findManagedSubscription: promisify(
|
||||
SubscriptionLocator.findManagedSubscription
|
||||
),
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
const { expect } = require('chai')
|
||||
const async = require('async')
|
||||
const User = require('./helpers/User')
|
||||
const Subscription = require('./helpers/Subscription')
|
||||
|
||||
describe('Subscriptions', function() {
|
||||
describe('features', function() {
|
||||
describe('individual subscriptions', function() {
|
||||
beforeEach(function(done) {
|
||||
this.adminUser = new User()
|
||||
async.series(
|
||||
[
|
||||
cb => this.adminUser.ensureUserExists(cb),
|
||||
cb => {
|
||||
this.subscription = new Subscription({
|
||||
adminId: this.adminUser._id,
|
||||
groupPlan: false,
|
||||
planCode: 'professional'
|
||||
})
|
||||
this.subscription.ensureExists(cb)
|
||||
},
|
||||
cb => this.subscription.refreshUsersFeatures(cb)
|
||||
],
|
||||
done
|
||||
)
|
||||
})
|
||||
|
||||
it('should give features to admin', function(done) {
|
||||
this.adminUser.getFeatures((error, features) => {
|
||||
expect(features.collaborators).to.equal(-1)
|
||||
done(error)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('group subscriptions', function() {
|
||||
beforeEach(function(done) {
|
||||
this.adminUser = new User()
|
||||
this.memberUser = new User()
|
||||
async.series(
|
||||
[
|
||||
cb => this.adminUser.ensureUserExists(cb),
|
||||
cb => this.memberUser.ensureUserExists(cb),
|
||||
cb => {
|
||||
this.subscription = new Subscription({
|
||||
adminId: this.adminUser._id,
|
||||
memberIds: [this.memberUser._id],
|
||||
groupPlan: true,
|
||||
planCode: 'professional'
|
||||
})
|
||||
this.subscription.ensureExists(cb)
|
||||
},
|
||||
cb => this.subscription.refreshUsersFeatures(cb)
|
||||
],
|
||||
done
|
||||
)
|
||||
})
|
||||
|
||||
it('should give features to member', function(done) {
|
||||
this.memberUser.getFeatures((error, features) => {
|
||||
expect(features.collaborators).to.equal(-1)
|
||||
done(error)
|
||||
})
|
||||
})
|
||||
|
||||
it('should not give features to admin', function(done) {
|
||||
this.adminUser.getFeatures((error, features) => {
|
||||
expect(features.collaborators).to.equal(1)
|
||||
done(error)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user