Testing is simple. You just create a unit test that starts your express server, makes a http POST and asserts that your HTTP post works and gets the correct output back.
Using vows-is. (Sorry, no coffeescript)
var is = require("vows-is"),
app = require("../src/app.js");
is.config({
"server": {
"factory": function _factory(cb) { cb(app); }
}
});
is.suite("http request test").batch()
.context("a request to POST /incoming")
// make a POST request
.topic.is.a.request({
"method": "POST",
"uri": "http://localhost:8080/incoming",
// set the request body (req.body)
"json": {
"Body": ...,
"From": ...
}
})
.vow.it.should.have.status(200)
.vow.it.should.have
.header("content-type", "text/xml")
.context("contains a body that")
.topic.is.property('body')
.vow.it.should.be.ok
.vow.it.should.include.string('<?xml version="1.0" encoding="UTF-8" ?>\n<Response>\n<Say>Thanks for your text, we\'ll be in touch.</Say>\n</Response>')
// run the test suite
.suite().run({
reporter: is.reporter
}, function() {
is.end();
});
Store this in a file http-test.js in a folder test. Then just run
$ npm install vows-is
$ node test/http-test.js
See an example of exporting your serverSetup function