escaped-server
Version:
115 lines (91 loc) • 3.04 kB
JavaScript
var should = require('should');
var request = require('request');
describe('escape-server', function() {
describe('translateRequest', function() {
it('should handle a few cases', function(done) {
var res;
var es = require('../lib/escaped-server.js')();
res = es.translateRequest({
url: '/?_escaped_fragment_=key=value',
headers: { 'x-escaped-site': 'http://vidlink.eu:1300' }
});
res.should.equal('http://vidlink.eu:1300/#!key=value');
res = es.translateRequest({
url: '/?_escaped_fragment_=key=value',
headers: { 'x-escaped-site': 'http://vidlink.eu' }
});
res.should.equal('http://vidlink.eu/#!key=value');
res = es.translateRequest({
url: '/path?queryparams&_escaped_fragment_=hashfragment',
headers: { 'x-escaped-site': 'http://vidlink.eu:1300' }
});
res.should.equal('http://vidlink.eu:1300/path?queryparams#!hashfragment');
done();
});
});
it('should handle rendered flag', function(done) {
this.timeout(2500);
var server = require('http').createServer(function(req, res) {
res.end('<html><body><script>window=rendered=true;</script>success</body></html>');
});
var phantom = null;
after(function() {
server.close();
if (phantom) phantom.exit();
});
server.listen(6058);
require('phantom').create(function(p) {
phantom = p;
var es = require('../lib/escaped-server.js')();
es.phantom = p;
es.createAndOpen('http://127.0.0.1:6058', function(err, page) {
es.waitForRendered(page, 5000, function(err, res) {
should.not.exist(err);
should.exist(res);
res.should.match(/success/);
done();
});
});
});
});
it('should listen', function(done) {
var es = require('../lib/escaped-server.js')();
es.listen(4997);
var server = require('http').createServer(function(req, res) {
res.end('<html><body><script>window=rendered=true;</script>success</body></html>');
});
after(function(callback) { es.close(callback); server.close(); });
server.listen(6059, function() {
console.log('Requesting http://localhost:4997');
request({
url: 'http://localhost:4997?_escaped_fragment_=',
headers: {
'X-Escaped-Site': 'http://localhost:6059'
}
}, function(err, res, body) {
should.not.exist(err);
should.exist(res);
should.exist(body);
body.should.match(/success/);
res.statusCode.should.equal(200);
done();
});
});
});
it('should create-open-wait-release', function(done) {
this.timeout(10000);
var es = require('../lib/escaped-server.js')();
after(function() { es.close(); });
require('phantom').create(function(phantom) {
es.phantom = phantom;
es.createAndOpen('http://google.com', function(err, page) {
es.waitForRendered(page, 5000, function(err, res) {
should.not.exist(err);
should.exist(res);
res.should.match(/Google/);
done();
});
});
});
});
});