blob: 5360b52b7c33455ec2726c94808ebaec72bc1a75 [file]
/// <reference path="../../../typings/node/node.d.ts" />
/// <reference path="../../../typings/mocha/mocha.d.ts" />
/// <reference path="../../../typings/chai/chai.d.ts" />
'use strict';
var helper = require('../../test-helper');
var config = helper.config();
var chai = require('chai');
var should = chai.should();
var request = require('supertest');
describe('sequence', function() {
describe('in order', function() {
var servers, proxy;
before(function(done) {
config.edgemicro.plugins.sequence = ['test-one', 'test-two'];
helper.startServers(config, function(err, s) {
if (err) { return done(err); }
servers = s;
proxy = servers.proxy;
done();
});
});
after(function() {
servers.close();
});
it('response', function(done) {
request(proxy)
.post('/')
.set('content-type', 'application/json')
.send(JSON.stringify({}))
.expect(200)
.end(function(err, res) {
if (err) { return done(err); }
res.body.should.have.property('body').that.is.a.String;
var body = JSON.parse(res.body.body);
body.sequence_request.should.be.an.Array;
body.sequence_request.length.should.equal(2);
body.sequence_request.should.deep.equal(['one', 'two']);
res.body.should.have.property('sequence_response').that.is.an.Array;
res.body.sequence_response.length.should.equal(2);
res.body.sequence_response.should.deep.equal(['two', 'one']);
done();
});
});
});
describe('reversed', function() {
var servers, proxy;
before(function(done) {
config.edgemicro.plugins.sequence = ['test-two', 'test-one'];
helper.startServers(config, function(err, s) {
if (err) { return done(err); }
servers = s;
proxy = servers.proxy;
done();
});
});
after(function() {
servers.close();
});
it('response', function(done) {
request(proxy)
.post('/')
.set('content-type', 'application/json')
.send(JSON.stringify({}))
.expect(200)
.end(function(err, res) {
if (err) { return done(err); }
res.body.should.have.property('body').that.is.a.String;
var body = JSON.parse(res.body.body);
body.sequence_request.should.be.an.Array;
body.sequence_request.length.should.equal(2);
body.sequence_request.should.deep.equal(['two', 'one']);
res.body.should.have.property('sequence_response').that.is.an.Array;
res.body.sequence_response.length.should.equal(2);
res.body.sequence_response.should.deep.equal(['one', 'two']);
done();
});
});
});
describe('in order sandboxed', function() {
var servers, proxy;
before(function(done) {
config.edgemicro.plugins.sandbox = true;
config.edgemicro.plugins.sequence = ['test-one', 'test-two'];
helper.startServers(config, function(err, s) {
if (err) { return done(err); }
servers = s;
proxy = servers.proxy;
done();
});
});
after(function() {
servers.close();
});
it('response', function(done) {
request(proxy)
.post('/')
.set('content-type', 'application/json')
.send(JSON.stringify({}))
.expect(200)
.end(function(err, res) {
if (err) { return done(err); }
res.body.should.have.property('body').that.is.a.String;
var body = JSON.parse(res.body.body);
body.sequence_request.should.be.an.Array;
body.sequence_request.length.should.equal(2);
body.sequence_request.should.deep.equal(['one', 'two']);
res.body.should.have.property('sequence_response').that.is.an.Array;
res.body.sequence_response.length.should.equal(2);
res.body.sequence_response.should.deep.equal(['two', 'one']);
done();
});
});
});
describe('reversed sandboxed', function() {
var servers, proxy;
before(function(done) {
config.edgemicro.plugins.sandbox = true;
config.edgemicro.plugins.sequence = ['test-two', 'test-one'];
helper.startServers(config, function(err, s) {
if (err) { return done(err); }
servers = s;
proxy = servers.proxy;
done();
});
});
after(function() {
servers.close();
});
it('response', function(done) {
request(proxy)
.post('/')
.set('content-type', 'application/json')
.send(JSON.stringify({}))
.expect(200)
.end(function(err, res) {
if (err) { return done(err); }
res.body.should.have.property('body').that.is.a.String;
var body = JSON.parse(res.body.body);
body.sequence_request.should.be.an.Array;
body.sequence_request.length.should.equal(2);
body.sequence_request.should.deep.equal(['two', 'one']);
res.body.should.have.property('sequence_response').that.is.an.Array;
res.body.sequence_response.length.should.equal(2);
res.body.sequence_response.should.deep.equal(['one', 'two']);
done();
});
});
});
});