Restore Deleted Subscriptions Extra GitOrigin-RevId: 6fceb1142af8ba510dc266ef31acc86ddca69f0e
91 lines
2.8 KiB
JavaScript
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)
|
|
})
|
|
}
|
|
)
|
|
})
|
|
})
|
|
})
|