Skip to content

Instantly share code, notes, and snippets.

@robotarmy
Created May 21, 2010 02:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robotarmy/408380 to your computer and use it in GitHub Desktop.
Save robotarmy/408380 to your computer and use it in GitHub Desktop.
Ledger.prototype.server = undefined;
Ledger.prototype.halt_service = function() {
this.server.removeAllListeners('request');
this.server.removeAllListeners('listening');
this.server.close();
};
Ledger.prototype.service = function() {
var self = this;
var http = require('http');
var sys = require('sys');
self.server = http.createServer(function(request,response) {
var resp = response;
self.find_all(function(err,items){
var body = JSON.stringify(items);
resp.writeHead(200, {
'Content-Length': body.length,
'Content-Type': 'text/json'
});
resp.write(body,'utf8')
resp.end();
});
});
self.server.addListener('close',function(errno) {
sys.puts('close ' + errno);
});
self.server.listen(8001);
};
it('it serves json on port 8001', function() {
var ledger = new Ledger();
ledger.service();
ledger.append([{name:'A Thing', value: "A Value"},{horse:'pony',value:'cake'}],function(err,items){
http = require('http');
var google = http.createClient(8001, 'localhost');
var request = google.request('GET', '/',{'host': 'localhost'});
request.addListener('response', function (response) {
response.setEncoding('utf8');
expect(response.statusCode).toEqual(200);
expect(response.headers["content-type"]).toEqual('text/json');
response.addListener('data', function (chunk) {
data = JSON.parse(chunk);
expect(data[0]['name']).toEqual('A Thing');
expect(data[1]['horse']).toEqual('pony');
asyncSpecDone();
});
});
request.end();
});
asyncSpecWait();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment