« index
Coverage for /Users/yunong/workspace/node-restify/test/formatter.test.js : 96%
115 lines |
111 run |
4 missing |
0 partial |
19 blocks |
17 blocks run |
2 blocks missing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | // Copyright 2012 Mark Cavage, Inc. All rights reserved. var assert = require('assert-plus'); var restify = require('../lib'); if (require.cache[__dirname + '/lib/helper.js']) delete require.cache[__dirname + '/lib/helper.js']; var helper = require('./lib/helper.js'); ///--- Globals var after = helper.after; var before = helper.before; var test = helper.test; var PORT = process.env.UNIT_TEST_PORT || 0; var CLIENT; var SERVER; var isFirstRequest = true; ///--- Tests before(function (callback) { try { SERVER = restify.createServer({ formatters: { 'text/plain': function (req, res, body, cb) { if (isFirstRequest) { process.nextTick(function () { isFirstRequest = false; cb(null, 'async fmt'); }); return (this); } return ('sync fmt'); }, 'application/foo; q=0.9': function () { return ('foo!'); } }, dtrace: helper.dtrace, log: helper.getLog('server'), version: ['2.0.0', '0.5.4', '1.4.3'] }); SERVER.listen(PORT, '127.0.0.1', function () { PORT = SERVER.address().port; CLIENT = restify.createStringClient({ url: 'http://127.0.0.1:' + PORT, dtrace: helper.dtrace, retry: false, agent: false }); SERVER.get('/tmp', function (req, res) { res.send('dummy response'); }); process.nextTick(callback); }); } catch (e) { console.error(e.stack); process.exit(1); } }); after(function (callback) { try { SERVER.close(callback); } catch (e) { console.error(e.stack); process.exit(1); } }); test('async formatter', function (t) { CLIENT.get('/tmp', function (err, req, res, data) { t.ifError(err); t.ok(req); t.ok(res); t.equal(data, 'async fmt'); t.end(); }); }); test('sync formatter', function (t) { CLIENT.get('/tmp', function (err, req, res, data) { t.ifError(err); t.ok(req); t.ok(res); t.equal(data, 'sync fmt'); t.end(); }); }); test('q-val priority', function (t) { var opts = { path: '/tmp', headers: { accept: 'application/*' } }; CLIENT.get(opts, function (err, req, res, data) { t.ifError(err); t.ok(req); t.ok(res); t.equal(data, 'foo!'); t.end(); }); }); |