UNPKG

smc-hub

Version:

CoCalc: Backend webserver component

175 lines (152 loc) 4.54 kB
// Generated by CoffeeScript 2.5.1 (function() { //######################################################################## // This file is part of CoCalc: Copyright © 2020 Sagemath, Inc. // License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details //######################################################################## /* Test suite for API interface and functionality. COPYRIGHT : (c) 2017 SageMath, Inc. LICENSE : AGPLv3 */ var async, auth, compute_client, email, http_message_api_v1, logger, pgtest, rimraf, sinon, temp; async = require('async'); rimraf = require('rimraf'); temp = require('temp'); sinon = require('sinon'); // stub email sending email = require('../../email'); exports.last_email = void 0; email = require('../../email'); sinon.stub(email, 'send_email').callsFake(function(opts) { exports.last_email = opts; return typeof opts.cb === "function" ? opts.cb() : void 0; }); pgtest = require('../postgres/pgtest'); compute_client = require('../../compute-client'); auth = require('../../auth'); exports.db = exports.account_id = exports.api_key = exports.compute_server = void 0; ({http_message_api_v1} = require('../../api/handler')); exports.winston = require('./../../logger').getLogger('api_test'); // a little reset for beforeEach exports.reset = function(done) { return async.series([ function(cb) { email.send_email.resetHistory(); return cb(); } ], done); }; exports.setup = function(cb) { return async.series([ function(cb) { return pgtest.setup(function(err) { if (err) { return cb(err); } else { exports.db = pgtest.db; return cb(); } }); }, function(cb) { return temp.mkdir('projects-test-', function(err, path) { process.env.COCALC_PROJECT_PATH = path; return cb(err); }); }, function(cb) { return compute_client.compute_server({ database: exports.db, dev: true, single: true, cb: function(err, compute_server) { if (err) { return cb(err); } else { exports.db.compute_server = compute_server; exports.compute_server = compute_server; return cb(); } } }); }, function(cb) { return exports.db.create_account({ first_name: "Sage", last_name: "CoCalc", created_by: "1.2.3.4", email_address: "cocalc@sagemath.com", password_hash: auth.password_hash('blah'), cb: function(err, account_id) { exports.account_id = account_id; return cb(err); } }); }, function(cb) { return exports.db.regenerate_api_key({ account_id: exports.account_id, cb: function(err, api_key) { exports.api_key = api_key; return cb(err); } }); } ], cb); }; exports.teardown = function(cb) { return async.series([ function(cb) { return pgtest.teardown(cb); }, function(cb) { if (process.env.COCALC_PROJECT_PATH == null) { cb(); return; } //console.log "DELETING '#{process.env.COCALC_PROJECT_PATH}'" // Delete both with rimraf and also a few seconds after exit with shell, in case of processes // blocking delete or creating something as they exit. require('child_process').spawn(`sleep 3; rm -rf '${process.env.COCALC_PROJECT_PATH}' &`, { shell: true }); return rimraf(process.env.COCALC_PROJECT_PATH, cb); } ], cb); }; exports.logger = logger = { debug: pgtest.log, info: pgtest.log, warning: pgtest.log }; exports.call = function(opts) { if (opts.database == null) { opts.database = exports.db; } if (opts.compute_server == null) { opts.compute_server = exports.compute_server; } if (opts.api_key == null) { opts.api_key = exports.api_key; } if (opts.ip_address == null) { opts.ip_address = '1.2.3.4'; } if (opts.logger == null) { opts.logger = logger; } if (opts.body == null) { opts.body = {}; } return http_message_api_v1(opts); }; }).call(this); //# sourceMappingURL=apitest.js.map