mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-04 21:01:06 -05:00
73 lines
1.9 KiB
CoffeeScript
73 lines
1.9 KiB
CoffeeScript
async = require 'async'
|
|
utils = require '../../server/lib/utils'
|
|
co = require 'co'
|
|
Promise = require 'bluebird'
|
|
User = require '../../server/models/User'
|
|
|
|
|
|
module.exports = mw =
|
|
getURL: (path) -> 'http://localhost:3001' + path
|
|
|
|
clearModels: Promise.promisify (models, done) ->
|
|
funcs = []
|
|
for model in models
|
|
wrapped = (m) ->
|
|
(callback) ->
|
|
m.remove {}, (err) ->
|
|
callback(err, true)
|
|
funcs.push(wrapped(model))
|
|
async.parallel funcs, done
|
|
|
|
initUser: (options, done) ->
|
|
if _.isFunction(options)
|
|
done = options
|
|
options = {}
|
|
options = _.extend({
|
|
permissions: []
|
|
email: 'user'+_.uniqueId()+'@gmail.com'
|
|
password: 'password'
|
|
anonymous: false
|
|
}, options)
|
|
user = new User(options)
|
|
promise = user.save()
|
|
return promise
|
|
|
|
loginUser: Promise.promisify (user, options={}, done) ->
|
|
if _.isFunction(options)
|
|
done = options
|
|
options = {}
|
|
form = {
|
|
username: user.get('email')
|
|
password: 'password'
|
|
}
|
|
(options.request or request).post mw.getURL('/auth/login'), { form: form }, (err, res) ->
|
|
expect(err).toBe(null)
|
|
expect(res.statusCode).toBe(200)
|
|
done(err, user)
|
|
|
|
initAdmin: (options) ->
|
|
if _.isFunction(options)
|
|
done = options
|
|
options = {}
|
|
options = _.extend({permissions: ['admin']}, options)
|
|
return @initUser(options)
|
|
|
|
initArtisan: (options) ->
|
|
if _.isFunction(options)
|
|
done = options
|
|
options = {}
|
|
options = _.extend({permissions: ['artisan']}, options)
|
|
return @initUser(options)
|
|
|
|
becomeAnonymous: Promise.promisify (done) ->
|
|
request.post mw.getURL('/auth/logout'), ->
|
|
request.get mw.getURL('/auth/whoami'), done
|
|
|
|
logout: Promise.promisify (done) ->
|
|
request.post mw.getURL('/auth/logout'), done
|
|
|
|
wrap: (gen) ->
|
|
fn = co.wrap(gen)
|
|
return (done) ->
|
|
fn.apply(@, [done]).catch (err) -> done.fail(err)
|
|
|