pm2/test/interface/interactor.daemonizer.mocha.js

192 lines
6.7 KiB
JavaScript

var should = require('should');
var fs = require('fs');
var os = require('os');
var default_conf = require('../../constants');
var interactorDaemonizer = require('../../lib/Interactor/InteractorDaemonizer');
var json5 = require('../../lib/tools/json5.js');
describe('Daemonizer interactor', function() {
before(function(done) {
delete process.env.PM2_SECRET_KEY;
delete process.env.PM2_PUBLIC_KEY;
try {
fs.unlinkSync(default_conf.INTERACTION_CONF);
} catch(e) {
}
done();
});
describe('General tests', function() {
it('should try get set keys but get error because nothing exposed', function(done) {
interactorDaemonizer.getSetKeys(default_conf, null, null, null, function(err, data) {
err.should.not.be.null();
done();
});
});
it('should work with env variables and create file', function(done) {
process.env.PM2_SECRET_KEY = 'XXXS';
process.env.PM2_PUBLIC_KEY = 'XXXP';
interactorDaemonizer.getSetKeys(default_conf, null, null, null, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS');
data.public_key.should.eql('XXXP');
should.exist(data.version_management.active);
should(data.version_management.password).be.null();
try {
fs.statSync(default_conf.INTERACTION_CONF);
} catch(e) {
return done(e);
}
delete process.env.PM2_SECRET_KEY;
delete process.env.PM2_PUBLIC_KEY;
return done();
});
});
it('should retrieve data from file without env variable', function(done) {
interactorDaemonizer.getSetKeys(default_conf, null, null, null, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS');
data.public_key.should.eql('XXXP');
return done();
});
});
it('should set new keys and write in configuration file', function(done) {
interactorDaemonizer.getSetKeys(default_conf, 'XXXS2', 'XXXP2', null, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS2');
data.public_key.should.eql('XXXP2');
var interaction_conf = json5.parse(fs.readFileSync(default_conf.INTERACTION_CONF));
interaction_conf.secret_key.should.eql('XXXS2');
interaction_conf.public_key.should.eql('XXXP2');
should.exist(interaction_conf.version_management.active);
should(interaction_conf.version_management.password).be.null();
interaction_conf.machine_name.should.eql(os.hostname());
return done();
});
});
it('should work with object passed instead of direct params', function(done) {
interactorDaemonizer.getSetKeys(default_conf, {
secret_key : 'XXXS3',
public_key : 'XXXP3'
}, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS3');
data.public_key.should.eql('XXXP3');
var interaction_conf = json5.parse(fs.readFileSync(default_conf.INTERACTION_CONF));
interaction_conf.secret_key.should.eql('XXXS3');
interaction_conf.public_key.should.eql('XXXP3');
interaction_conf.machine_name.should.eql(os.hostname());
return done();
});
});
});
describe.skip('Recycle option', function() {
it('should handle recycle option', function(done) {
interactorDaemonizer.getSetKeys(default_conf, 'XXXS2', 'XXXP2', null, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS2');
data.public_key.should.eql('XXXP2');
data.recycle.should.be.true;
var interaction_conf = json5.parse(fs.readFileSync(default_conf.INTERACTION_CONF));
interaction_conf.secret_key.should.eql('XXXS2');
interaction_conf.public_key.should.eql('XXXP2');
interaction_conf.recycle.should.be.true;
should.exist(interaction_conf.version_management.active);
should(interaction_conf.version_management.password).be.null();
interaction_conf.machine_name.should.eql(os.hostname());
return done();
});
});
it('should handle recycle option (obj like)', function(done) {
interactorDaemonizer.getSetKeys({
secret_key : 'XXXS2',
public_key : 'XXXP2',
machine_name : null,
recycle : true
}, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS2');
data.public_key.should.eql('XXXP2');
data.recycle.should.be.true;
var interaction_conf = json5.parse(fs.readFileSync(default_conf.INTERACTION_CONF));
interaction_conf.secret_key.should.eql('XXXS2');
interaction_conf.public_key.should.eql('XXXP2');
interaction_conf.recycle.should.be.true;
should.exist(interaction_conf.version_management.active);
should(interaction_conf.version_management.password).be.null();
interaction_conf.machine_name.should.eql(os.hostname());
return done();
});
});
it('should handle recycle option opts2', function(done) {
interactorDaemonizer.getSetKeys(null, null, null, null, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS2');
data.public_key.should.eql('XXXP2');
data.recycle.should.be.true;
var interaction_conf = json5.parse(fs.readFileSync(default_conf.INTERACTION_CONF));
interaction_conf.secret_key.should.eql('XXXS2');
interaction_conf.public_key.should.eql('XXXP2');
interaction_conf.recycle.should.be.true;
should.exist(interaction_conf.version_management.active);
should(interaction_conf.version_management.password).be.null();
interaction_conf.machine_name.should.eql(os.hostname());
return done();
});
});
it('should stop recycle option if passing secret and pub', function(done) {
interactorDaemonizer.getSetKeys({
secret_key : 'XXXS2',
public_key : 'XXXP2',
machine_name : null
}, function(err, data) {
should(err).be.null();
data.secret_key.should.eql('XXXS2');
data.public_key.should.eql('XXXP2');
data.recycle.should.be.false;
var interaction_conf = json5.parse(fs.readFileSync(default_conf.INTERACTION_CONF));
interaction_conf.secret_key.should.eql('XXXS2');
interaction_conf.public_key.should.eql('XXXP2');
interaction_conf.recycle.should.be.false;
should.exist(interaction_conf.version_management.active);
should(interaction_conf.version_management.password).be.null();
interaction_conf.machine_name.should.eql(os.hostname());
return done();
});
});
});
});