« index
Coverage for /Users/yunong/workspace/node-restify/test/router.test.js : 99%
140 lines |
139 run |
1 missing |
0 partial |
11 blocks |
10 blocks run |
1 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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | // 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 realizeUrl = restify.realizeUrl; var test = helper.test; var mockResponse = function respond(req, res, next) { res.send(200); }; ///--- Tests test('render route', function (t) { var server = restify.createServer(); server.get({name: 'countries', path: '/countries'}, mockResponse); server.get({name: 'country', path: '/countries/:name'}, mockResponse); server.get({name: 'cities', path: '/countries/:name/states/:state/cities'}, mockResponse); var countries = server.router.render('countries', {}); t.equal(countries, '/countries'); var country = server.router.render('country', {name: 'Australia'}); t.equal(country, '/countries/Australia'); var cities = server.router.render('cities', { name: 'Australia', state: 'New South Wales' }); t.equal(cities, '/countries/Australia/states/New%20South%20Wales/cities'); t.end(); }); test('render route (missing params)', function (t) { var server = restify.createServer(); server.get({name: 'cities', path: '/countries/:name/states/:state/cities'}, mockResponse); try { server.router.render('cities', {name: 'Australia'}); } catch (ex) { t.equal(ex, 'Error: Route <cities> is missing parameter <state>'); } t.end(); }); test('GH #704: render route (special charaters)', function (t) { var server = restify.createServer(); server.get({name: 'my-route', path: '/countries/:name'}, mockResponse); var link = server.router.render('my-route', {name: 'Australia'}); t.equal(link, '/countries/Australia'); t.end(); }); test('GH #704: render route (with sub-regex param)', function (t) { var server = restify.createServer(); server.get({ name: 'my-route', path: '/countries/:code([A-Z]{2,3})' }, mockResponse); var link = server.router.render('my-route', {code: 'FR'}); t.equal(link, '/countries/FR'); link = server.router.render('my-route', {code: '111'}); t.equal(link, '/countries/111'); t.end(); }); test('GH-796: render route (with multiple sub-regex param)', function (t) { var server = restify.createServer(); server.get({ name: 'my-route', path: '/countries/:code([A-Z]{2,3})/:area([0-9]+)' }, mockResponse); var link = server.router.render('my-route', {code: '111', area: 42}); t.equal(link, '/countries/111/42'); t.end(); }); test('render route (with encode)', function (t) { var server = restify.createServer(); server.get({name: 'my-route', path: '/countries/:name'}, mockResponse); var link = server.router.render('my-route', {name: 'Trinidad & Tobago'}); t.equal(link, '/countries/Trinidad%20%26%20Tobago'); t.end(); }); test('render route (query string)', function (t) { var server = restify.createServer(); server.get({name: 'country', path: '/countries/:name'}, mockResponse); var country1 = server.router.render('country', { name: 'Australia' }, { state: 'New South Wales', 'cities/towns': 5 }); /* JSSTYLED */ t.equal(country1, '/countries/Australia?state=New%20South%20Wales&cities%2Ftowns=5'); var country2 = server.router.render('country', { name: 'Australia' }, { state: 'NSW & VIC', 'cities&towns': 5 }); /* JSSTYLED */ t.equal(country2, '/countries/Australia?state=NSW%20%26%20VIC&cities%26towns=5'); t.end(); }); |