mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-30 19:06:59 -05:00
c2f17edaea
This test has been unstable, possibly because it was using one request instance to fire off requests for many users. Rewrote using generators and multiple request instances with separate cookie jars. For #3469.
80 lines
No EOL
2.1 KiB
CoffeeScript
80 lines
No EOL
2.1 KiB
CoffeeScript
nock = require('nock')
|
|
nockBack = nock.back
|
|
nockBack.fixtures = 'spec/fixtures/'
|
|
Promise = require 'bluebird'
|
|
|
|
module.exports.setupNock = (fixtureFilename, options, done) ->
|
|
if _.isFunction(options)
|
|
done = options
|
|
options = {}
|
|
|
|
keep = {
|
|
has_more: true
|
|
email: true
|
|
subscription: true
|
|
description: true
|
|
current_period_end: true
|
|
current_period_start: true
|
|
cancel_at_period_end: true
|
|
productID: true
|
|
amount: true
|
|
customer: true
|
|
gems: true
|
|
id: true
|
|
product_id: true
|
|
proration: true
|
|
paid: true
|
|
quantity: true
|
|
timestamp: true
|
|
total: true
|
|
transaction_id: true
|
|
type: true
|
|
months: true
|
|
}
|
|
|
|
if options.keep
|
|
_.extend(keep, options.keep)
|
|
|
|
afterRecord = (scopes) ->
|
|
scopes = _.filter scopes, (scope) -> not _.contains(scope.scope, '//localhost:')
|
|
for scope in scopes
|
|
delete scope['body']
|
|
delete scope['headers']
|
|
clean(scope.response)
|
|
return scopes
|
|
|
|
clean = (obj) ->
|
|
for key, value of obj
|
|
unless keep[key] or _.isArray(value) or _.isObject(value)
|
|
delete obj[key]
|
|
if _.isNull(value)
|
|
delete obj[key]
|
|
if _.isArray(value)
|
|
for child in value
|
|
clean(child)
|
|
if _.isEmpty(value)
|
|
delete obj[key]
|
|
if _.isObject(value)
|
|
clean(value)
|
|
if _.isEmpty(value)
|
|
delete obj[key]
|
|
|
|
nockBack.setMode('record')
|
|
nockBack fixtureFilename, {afterRecord: afterRecord, before: before}, (nockDone) ->
|
|
nock.enableNetConnect('localhost')
|
|
done(null, nockDone)
|
|
|
|
module.exports.teardownNock = ->
|
|
nockBack.setMode('wild')
|
|
nock.cleanAll()
|
|
|
|
# payment.spec.coffee needs this, because each test creates new Users with new _ids which
|
|
# are sent to Stripe as metadata. This messes up the tests which expect inputs to be
|
|
# uniform. This scope-preprocessor makes nock ignore body for matching requests.
|
|
# Ideally we would not do this; perhaps a better system would be to figure out a way
|
|
# to create users with consistent _id values.
|
|
|
|
before = (scope) ->
|
|
scope.body = (body) -> true
|
|
|
|
Promise.promisifyAll(module.exports) |