cluster-service
Version:
Turns your single process code into a fault-resilient multi-process service with built-in REST & CLI support
133 lines (122 loc) • 3.6 kB
JavaScript
var cservice = require("../cluster-service");
var assert = require("assert");
var httpclient = require("../lib/http-client");
var util = require("util");
var request = require("request");
cservice.log = function() {};
cservice.results = function() {};
if(cservice.isWorker){
it("WORKER", function(done) {});
} else {
describe('[REST Server]', function() {
it('Start worker', function(done) {
cservice.start(
{
workers: null,
workerCount: 0,
accessKey: "123",
cli: false
},
function() {
assert.equal(
cservice.workers.length,
0,
"0 worker expected, but " + cservice.workers.length + " found"
);
done();
}
);
});
httpclient.init(
util._extend(cservice.options, {accessKey: "123", silentMode: true})
);
it('Health check', function(done) {
httpclient.execute("health", function(err, result) {
assert.equal(
result, "\"OK\"", "Expected OK. result=" + result + ", err=" + err
);
done();
}
);
});
it('Bad command', function(done) {
httpclient.execute("x98s7df987sdf", function(err, result) {
assert.equal(
err,
"Not found. Try /help", "Expected 'Not found. Try /help'. result="
+ result
+ ", err=" + err
);
done();
}
);
});
var disabledCmd = function(evt, cb) {
cb(null, "You shouldn't be able to see my data");
};
disabledCmd.control = function() {
return "disabled";
};
it('Run cmd', function(done) {
cservice.start({run: "health"}, function(err, result) {
assert.ifError(err);
assert.equal(result, "\"OK\"", "Expected OK, but received: " + result);
done();
return false;
});
});
it('Command authorization', function(done) {
cservice.on("disabledCmd", disabledCmd);
var url = "http://localhost:11987/cli?cmd=disabledCmd&accessKey=123";
request.post(url, function(err, res, result) {
assert.equal(
result,
"Not authorized to execute 'disabledCmd' remotely"
);
done();
});
});
it('Request authorization', function(done) {
cservice.on("disabledCmd", disabledCmd);
var url = "http://localhost:11987/cli?cmd=disabledCmd&accessKey=BAD";
request.post(url, function(err, res, result) {
assert.equal(result, "Not authorized");
done();
});
});
it('Method Not Allowed', function(done) {
var url = "http://localhost:11987/cli?cmd=health&accessKey=123";
request.get(url, function(err, res, result) {
assert.equal(
result,
"Method Not Allowed", "Expected 'Method Not Allowed'. result="
+ result
+ ", err=" + err
);
done();
});
});
it('Page Not Found', function(done) {
var url = "http://localhost:11987/BADCLI?cmd=health&accessKey=123";
request.post(url, function(err, res, result) {
assert.equal(
result,
"Page Not Found", "Expected 'Page Not Found'. result="
+ result
+ ", err=" + err
);
done();
});
});
it('Stop workers', function(done) {
cservice.stop(30000, function() {
assert.equal(
cservice.workers.length,
0,
"0 workers expected, but " + cservice.workers.length + " found"
);
done();
});
});
});
}