Files
cloudron-box/src/test/tasks-test.js
T

82 lines
2.5 KiB
JavaScript
Raw Normal View History

2018-12-10 21:05:46 -08:00
/* jslint node:true */
/* global it:false */
/* global before:false */
/* global after:false */
/* global describe:false */
'use strict';
2021-06-03 12:20:44 -07:00
const common = require('./common.js'),
2018-12-10 21:05:46 -08:00
expect = require('expect.js'),
fs = require('fs'),
paths = require('../paths.js'),
tasks = require('../tasks.js');
describe('task', function () {
2021-06-03 12:20:44 -07:00
before(common.setup);
after(common.cleanup);
2018-12-10 21:05:46 -08:00
it('can run valid task - success', function (done) {
2019-08-27 22:39:59 -07:00
tasks.add(tasks._TASK_IDENTITY, [ 'ping' ], function (error, taskId) {
2018-12-10 21:05:46 -08:00
if (error) return done(error);
2019-08-27 22:39:59 -07:00
tasks.startTask(taskId, {}, function (error, result) {
if (error) return done(error);
expect(result).to.equal('ping');
expect(taskId).to.be.ok();
done();
});
2018-12-10 21:05:46 -08:00
});
});
it('can run valid task - error', function (done) {
2019-08-27 22:39:59 -07:00
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();
});
2018-12-10 21:05:46 -08:00
});
});
2018-12-10 21:42:03 -08:00
it('can get logs of crash', function (done) {
2019-08-27 22:39:59 -07:00
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();
});
2018-12-10 21:05:46 -08:00
});
});
2018-12-10 21:42:03 -08:00
it('can stop task', function (done) {
2019-08-27 22:39:59 -07:00
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();
2020-08-06 22:04:46 -07:00
expect(error.message).to.contain('stopped');
2019-08-27 22:39:59 -07:00
expect(result).to.be(null);
expect(taskId).to.be.ok();
done();
});
setTimeout(() => {
tasks.stopTask(taskId, () => {});
}, 100);
2018-12-10 21:42:03 -08:00
});
});
2018-12-10 21:05:46 -08:00
});