smc-hub
Version:
CoCalc: Backend webserver component
175 lines (152 loc) • 4.54 kB
JavaScript
// 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