async = require('async')
rimraf = require('rimraf')
temp = require('temp')
email = require('../../email')
exports.last_email = undefined
email.send_email = (opts) ->
exports.last_email = opts
opts.cb?()
pgtest = require('../postgres/pgtest')
compute_client = require('../../compute-client')
auth = require('../../auth')
exports.db = exports.account_id = exports.api_key = exports.compute_server = undefined
{http_message_api_v1} = require('../../api/handler')
winston = require('winston')
try
winston.remove(winston.transports.Console)
catch
exports.setup = (cb) ->
async.series([
(cb) ->
pgtest.setup (err) ->
if err
cb(err)
else
exports.db = pgtest.db
cb()
(cb) ->
temp.mkdir 'projects-test-', (err, path) ->
process.env.COCALC_PROJECT_PATH = path
cb(err)
(cb) ->
compute_client.compute_server
database : exports.db
dev : true
single : true
base_url : ''
cb : (err, compute_server) ->
if err
cb(err)
else
exports.db.compute_server = compute_server
exports.compute_server = compute_server
cb()
(cb) ->
exports.db.create_account
first_name : "Sage"
last_name : "CoCalc"
created_by : "1.2.3.4"
email_address : "[email protected]"
password_hash : auth.password_hash('blah')
cb : (err, account_id) ->
exports.account_id = account_id
cb(err)
(cb) ->
exports.db.regenerate_api_key
account_id : exports.account_id
cb : (err, api_key) ->
exports.api_key = api_key
cb(err)
], cb)
exports.teardown = (cb) ->
async.series([
(cb) ->
pgtest.teardown(cb)
(cb) ->
if not process.env.COCALC_PROJECT_PATH?
cb()
return
require('child_process').spawn("sleep 3; rm -rf '#{process.env.COCALC_PROJECT_PATH}' &", {shell:true})
rimraf(process.env.COCALC_PROJECT_PATH, cb)
], cb)
logger =
debug : pgtest.log
info : pgtest.log
warning : pgtest.log
exports.call = (opts) ->
opts.database ?= exports.db
opts.compute_server ?= exports.compute_server
opts.api_key ?= exports.api_key
opts.ip_address ?= '1.2.3.4'
opts.logger ?= logger
opts.body ?= {}
http_message_api_v1(opts)