fed
Version:
Development tool for web, support http server and freemarker.js and http proxy.
145 lines (120 loc) • 3.69 kB
JavaScript
var should = require('should');
var Request = require('supertest');
var resolve = require('path').resolve;
var fed = resolve('./bin/fed');
var exec = function(cmd, cb) {
require('child_process').exec(cmd, {timeout: 50000}, cb);
}
var spawn = require('child_process').spawn;
var fedbin = [ 'node', fed, ' '].join(' ');
var kill = function(pid) {
if(process.platform === 'win32') {
exec('taskkill /f /t /pid ' + pid);
} else {
exec('kill ' + pid);
}
};
describe('Test fed showing help message', function() {
it('show help message when -h', function(done) {
exec(fedbin + '-h', function(err, so, se) {
so.should.match(/Usage: fed \[options\] \[command\]/);
done(err);
});
});
it('show help message when help', function(done) {
exec(fedbin + 'help', function(err, so, se) {
so.should.match(/Usage: fed \[options\] \[command\]/);
done(err);
});
});
it('show sub command help message', function(done) {
exec(fedbin + 'help server', function(err, so, se) {
so.should.match(/Usage: fed-server \[options\] \[dir\]/);
done(err);
});
});
});
describe('Test fed showing versions', function() {
var fedVer = require('../package').version;
var serVer = require('../node_modules/serve2/package').version
it('show fed version', function(done) {
exec(fedbin + 'version', function(e, so, se) {
so.should.match(new RegExp(fedVer));
done(e);
});
});
it('show serve2 version', function(done) {
exec(fedbin + 'server version', function(e, so, se) {
so.should.match(new RegExp(serVer));
done(e);
});
});
it('show fed and serve2 versions', function(done) {
exec(fedbin + 'versions', function(e, so, se) {
so.should.match(new RegExp(fedVer));
so.should.match(new RegExp(serVer));
done(e);
});
});
});
describe('Test fed starting server', function() {
this.timeout(5000);
var p = null;
it('start static server default current workdir', function(done) {
p = spawn('node', [fed, 'server', '-p', '3001', '.'], {timeout: 5000});
p.stderr.once('data', function(e) {
console.log('error', ''+e);
done(e);
});
p.stdout.once('data', function(d) {
var request = Request('http://localhost:3001');
request
.get('/package.json')
.expect(200)
.expect(/fed/)
.expect(/version/)
.end(function(e) {
kill(p.pid);
done(e);
});
});
});
it('start server with freemarker suport', function(done) {
p = spawn('node', [fed, 'server', '-p', '3002', '-M', 'mock', '--view-root', 'view', './test/res'], {timeout: 5000});
p.stderr.once('data', function(e) {
console.log('error', ''+e);
done(e);
});
p.stdout.once('data', function() {
var request = Request('http://localhost:3002');
request
.get('/test.js')
.expect(200)
.expect(/hello/)
.expect(/inner/)
.end(function(e) {
kill(p.pid);
done(e);
});
});
});
it('render freemarker template with global vars appName "fed" ', function(done) {
p = spawn('node', [fed, 'server', '-p', '3003', '-M', 'mock', '--view-root', 'view', './test/res'], {timeout: 5000});
p.stderr.on('data', function(e) {
console.log('error', ''+e);
done(e);
});
p.stdout.once('data', function() {
var request = Request('http://localhost:3003');
request
.get('/useGlobals.js')
.expect(200)
.expect(/Hello/)
.expect(/fed/)
.end(function(e) {
kill(p.pid);
done(e);
});
});
});
});