Files
cloudron-box/src/test/tasks-test.js
Girish Ramakrishnan f8e22a0730 Fix tests
2020-08-07 00:21:15 -07:00

97 lines
2.8 KiB
JavaScript

/* jslint node:true */
/* global it:false */
/* global before:false */
/* global after:false */
/* global describe:false */
'use strict';
var async = require('async'),
database = require('../database.js'),
expect = require('expect.js'),
fs = require('fs'),
paths = require('../paths.js'),
tasks = require('../tasks.js');
function setup(done) {
async.series([
database.initialize,
database._clear
], done);
}
function cleanup(done) {
async.series([
database._clear,
database.uninitialize
], done);
}
describe('task', function () {
before(setup);
after(cleanup);
it('can run valid task - success', function (done) {
tasks.add(tasks._TASK_IDENTITY, [ 'ping' ], function (error, taskId) {
if (error) return done(error);
tasks.startTask(taskId, {}, function (error, result) {
if (error) return done(error);
expect(result).to.equal('ping');
expect(taskId).to.be.ok();
done();
});
});
});
it('can run valid task - error', function (done) {
tasks.add(tasks._TASK_ERROR, [ 'ping' ], function (error, taskId) {
if (error) return done(error);
tasks.startTask(taskId, {}, function (error, result) {
expect(error).to.be.ok();
expect(error.message).to.be('Failed for arg: ping');
expect(result).to.be(null);
expect(taskId).to.be.ok();
done();
});
});
});
it('can get logs of crash', function (done) {
tasks.add(tasks._TASK_CRASH, [ 'ping' ], function (error, taskId) {
if (error) return done(error);
tasks.startTask(taskId, {}, function (error, result) {
expect(error).to.be.ok();
expect(error.message).to.contain(`Task ${taskId} crashed`);
expect(result).to.be(null);
expect(taskId).to.be.ok();
let logs = fs.readFileSync(`${paths.TASKS_LOG_DIR}/${taskId}.log`, 'utf8');
expect(logs).to.contain('Crashing for arg: ping');
done();
});
});
});
it('can stop task', function (done) {
tasks.add(tasks._TASK_SLEEP, [ 10000 ], function (error, taskId) {
if (error) return done(error);
tasks.startTask(taskId, {}, function (error, result) {
expect(error).to.be.ok();
expect(error.message).to.contain('stopped');
expect(result).to.be(null);
expect(taskId).to.be.ok();
done();
});
setTimeout(() => {
tasks.stopTask(taskId, () => {});
}, 100);
});
});
});