Files
Verso/services/web/test/acceptance/src/SubscriptionDeletionTests.js
T
Timothée Albyandsharelatex 0c9bf05a0a Merge pull request #2139 from overleaf/ta-subscription-restore-misc
Restore Deleted Subscriptions Extra

GitOrigin-RevId: 6fceb1142af8ba510dc266ef31acc86ddca69f0e
2019-09-10 14:44:18 +00:00

91 lines
2.8 KiB
JavaScript

const { expect } = require('chai')
const async = require('async')
const request = require('./helpers/request')
const User = require('./helpers/User')
const RecurlySubscription = require('./helpers/RecurlySubscription')
const SubscriptionUpdater = require('../../../app/src/Features/Subscription/SubscriptionUpdater')
require('./helpers/MockV1Api')
describe('Subscriptions', function() {
describe('deletion', 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.recurlySubscription = new RecurlySubscription({
adminId: this.adminUser._id,
memberIds: [this.memberUser._id],
invitedEmails: ['foo@bar.com'],
teamInvites: [{ email: 'foo@baz.com' }],
groupPlan: true,
state: 'expired',
planCode: 'professional'
})
this.subscription = this.recurlySubscription.subscription
this.recurlySubscription.ensureExists(cb)
},
cb => this.subscription.refreshUsersFeatures(cb)
],
done
)
})
it('deletes via Recurly callback', function(done) {
let url = '/user/subscription/callback'
let body = this.recurlySubscription.buildCallbackXml()
request.post({ url, body }, (error, { statusCode }) => {
if (error) {
return done(error)
}
expect(statusCode).to.equal(200)
this.subscription.expectDeleted({ ip: '127.0.0.1' }, done)
})
})
it('refresh features', function(done) {
let url = '/user/subscription/callback'
let body = this.recurlySubscription.buildCallbackXml()
request.post({ url, body }, (error, { statusCode }) => {
if (error) {
return done(error)
}
this.memberUser.getFeatures((error, features) => {
expect(features.collaborators).to.equal(1)
done(error)
})
})
})
it('allows deletion when deletedSubscription exists', function(done) {
let url = '/user/subscription/callback'
let body = this.recurlySubscription.buildCallbackXml()
// create fake deletedSubscription
SubscriptionUpdater._createDeletedSubscription(
this.subscription,
{},
error => {
if (error) {
return done(error)
}
// try deleting the subscription
request.post({ url, body }, (error, { statusCode }) => {
if (error) {
return done(error)
}
expect(statusCode).to.equal(200)
this.subscription.expectDeleted({ ip: '127.0.0.1' }, done)
})
}
)
})
})
})