Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
50655 views
1
###
2
Test suite for API interface and functionality.
3
4
COPYRIGHT : (c) 2017 SageMath, Inc.
5
LICENSE : AGPLv3
6
###
7
8
async = require('async')
9
rimraf = require('rimraf')
10
temp = require('temp')
11
12
# mock email sending
13
email = require('../../email')
14
exports.last_email = undefined
15
email.send_email = (opts) ->
16
exports.last_email = opts
17
opts.cb?()
18
19
pgtest = require('../postgres/pgtest')
20
21
compute_client = require('../../compute-client')
22
auth = require('../../auth')
23
24
exports.db = exports.account_id = exports.api_key = exports.compute_server = undefined
25
26
{http_message_api_v1} = require('../../api/handler')
27
28
winston = require('winston')
29
try
30
winston.remove(winston.transports.Console)
31
catch
32
# exception if already removed.
33
34
exports.setup = (cb) ->
35
async.series([
36
(cb) ->
37
pgtest.setup (err) ->
38
if err
39
cb(err)
40
else
41
exports.db = pgtest.db
42
cb()
43
(cb) ->
44
temp.mkdir 'projects-test-', (err, path) ->
45
process.env.COCALC_PROJECT_PATH = path
46
cb(err)
47
(cb) ->
48
compute_client.compute_server
49
database : exports.db
50
dev : true
51
single : true
52
base_url : ''
53
cb : (err, compute_server) ->
54
if err
55
cb(err)
56
else
57
exports.db.compute_server = compute_server
58
exports.compute_server = compute_server
59
cb()
60
(cb) ->
61
exports.db.create_account
62
first_name : "Sage"
63
last_name : "CoCalc"
64
created_by : "1.2.3.4"
65
email_address : "[email protected]"
66
password_hash : auth.password_hash('blah')
67
cb : (err, account_id) ->
68
exports.account_id = account_id
69
cb(err)
70
(cb) ->
71
exports.db.regenerate_api_key
72
account_id : exports.account_id
73
cb : (err, api_key) ->
74
exports.api_key = api_key
75
cb(err)
76
], cb)
77
78
exports.teardown = (cb) ->
79
async.series([
80
(cb) ->
81
pgtest.teardown(cb)
82
(cb) ->
83
if not process.env.COCALC_PROJECT_PATH?
84
cb()
85
return
86
#console.log "DELETING '#{process.env.COCALC_PROJECT_PATH}'"
87
# Delete both with rimraf and also a few seconds after exit with shell, in case of processes
88
# blocking delete or creating something as they exit.
89
require('child_process').spawn("sleep 3; rm -rf '#{process.env.COCALC_PROJECT_PATH}' &", {shell:true})
90
rimraf(process.env.COCALC_PROJECT_PATH, cb)
91
], cb)
92
93
logger =
94
debug : pgtest.log
95
info : pgtest.log
96
warning : pgtest.log
97
98
exports.call = (opts) ->
99
opts.database ?= exports.db
100
opts.compute_server ?= exports.compute_server
101
opts.api_key ?= exports.api_key
102
opts.ip_address ?= '1.2.3.4'
103
opts.logger ?= logger
104
opts.body ?= {}
105
http_message_api_v1(opts)
106
107
108