diff options
Diffstat (limited to 'dgbuilder/dgeflows/node_modules/express/node_modules/path-to-regexp/test.js')
-rw-r--r-- | dgbuilder/dgeflows/node_modules/express/node_modules/path-to-regexp/test.js | 616 |
1 files changed, 616 insertions, 0 deletions
diff --git a/dgbuilder/dgeflows/node_modules/express/node_modules/path-to-regexp/test.js b/dgbuilder/dgeflows/node_modules/express/node_modules/path-to-regexp/test.js new file mode 100644 index 00000000..4a0c2709 --- /dev/null +++ b/dgbuilder/dgeflows/node_modules/express/node_modules/path-to-regexp/test.js @@ -0,0 +1,616 @@ +var pathToRegExp = require('./'); +var assert = require('assert'); + +describe('path-to-regexp', function () { + describe('strings', function () { + it('should match simple paths', function () { + var params = []; + var m = pathToRegExp('/test', params).exec('/test'); + + assert.equal(params.length, 0); + + assert.equal(m.length, 1); + assert.equal(m[0], '/test'); + }); + + it('should match express format params', function () { + var params = []; + var m = pathToRegExp('/:test', params).exec('/pathname'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], '/pathname'); + assert.equal(m[1], 'pathname'); + }); + + it('should do strict matches', function () { + var params = []; + var re = pathToRegExp('/:test', params, { strict: true }); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + m = re.exec('/route'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/route'); + assert.equal(m[1], 'route'); + + m = re.exec('/route/'); + + assert.ok(!m); + }); + + it('should do strict matches with trailing slashes', function () { + var params = []; + var re = pathToRegExp('/:test/', params, { strict: true }); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + m = re.exec('/route'); + + assert.ok(!m); + + m = re.exec('/route/'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/route/'); + assert.equal(m[1], 'route'); + + m = re.exec('/route//'); + + assert.ok(!m); + }); + + it('should allow optional express format params', function () { + var params = []; + var re = pathToRegExp('/:test?', params); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, true); + + m = re.exec('/route'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/route'); + assert.equal(m[1], 'route'); + + m = re.exec('/'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/'); + assert.equal(m[1], undefined); + }); + + it('should allow express format param regexps', function () { + var params = []; + var m = pathToRegExp('/:page(\\d+)', params).exec('/56'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'page'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], '/56'); + assert.equal(m[1], '56'); + }); + + it('should match without a prefixed slash', function () { + var params = []; + var m = pathToRegExp(':test', params).exec('string'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], 'string'); + assert.equal(m[1], 'string'); + }); + + it('should not match format parts', function () { + var params = []; + var m = pathToRegExp('/:test.json', params).exec('/route.json'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], '/route.json'); + assert.equal(m[1], 'route'); + }); + + it('should match format parts', function () { + var params = []; + var re = pathToRegExp('/:test.:format', params); + var m; + + assert.equal(params.length, 2); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + assert.equal(params[1].name, 'format'); + assert.equal(params[1].optional, false); + + m = re.exec('/route.json'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/route.json'); + assert.equal(m[1], 'route'); + assert.equal(m[2], 'json'); + + m = re.exec('/route'); + + assert.ok(!m); + }); + + it('should match route parts with a trailing format', function () { + var params = []; + var m = pathToRegExp('/:test.json', params).exec('/route.json'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], '/route.json'); + assert.equal(m[1], 'route'); + }); + + it('should match optional trailing routes', function () { + var params = []; + var m = pathToRegExp('/test*', params).exec('/test/route'); + + assert.equal(params.length, 0); + + assert.equal(m.length, 2); + assert.equal(m[0], '/test/route'); + assert.equal(m[1], '/route'); + }); + + it('should match optional trailing routes after a param', function () { + var params = []; + var re = pathToRegExp('/:test*', params); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + m = re.exec('/test/route'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/test/route'); + assert.equal(m[1], 'test'); + assert.equal(m[2], '/route'); + + m = re.exec('/testing'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/testing'); + assert.equal(m[1], 'testing'); + assert.equal(m[2], ''); + }); + + it('should match optional trailing routes before a format', function () { + var params = []; + var re = pathToRegExp('/test*.json', params); + var m; + + assert.equal(params.length, 0); + + m = re.exec('/test.json'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/test.json'); + assert.equal(m[1], ''); + + m = re.exec('/testing.json'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/testing.json'); + assert.equal(m[1], 'ing'); + + m = re.exec('/test/route.json'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/test/route.json'); + assert.equal(m[1], '/route'); + }); + + it('should match optional trailing routes after a param and before a format', function () { + var params = []; + var re = pathToRegExp('/:test*.json', params); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + m = re.exec('/testing.json'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/testing.json'); + assert.equal(m[1], 'testing'); + assert.equal(m[2], ''); + + m = re.exec('/test/route.json'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/test/route.json'); + assert.equal(m[1], 'test'); + assert.equal(m[2], '/route'); + + m = re.exec('.json'); + + assert.ok(!m); + }); + + it('should match optional trailing routes between a normal param and a format param', function () { + var params = []; + var re = pathToRegExp('/:test*.:format', params); + var m; + + assert.equal(params.length, 2); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + assert.equal(params[1].name, 'format'); + assert.equal(params[1].optional, false); + + m = re.exec('/testing.json'); + + assert.equal(m.length, 4); + assert.equal(m[0], '/testing.json'); + assert.equal(m[1], 'testing'); + assert.equal(m[2], ''); + assert.equal(m[3], 'json'); + + m = re.exec('/test/route.json'); + + assert.equal(m.length, 4); + assert.equal(m[0], '/test/route.json'); + assert.equal(m[1], 'test'); + assert.equal(m[2], '/route'); + assert.equal(m[3], 'json'); + + m = re.exec('/test'); + + assert.ok(!m); + + m = re.exec('.json'); + + assert.ok(!m); + }); + + it('should match optional trailing routes after a param and before an optional format param', function () { + var params = []; + var re = pathToRegExp('/:test*.:format?', params); + var m; + + assert.equal(params.length, 2); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + assert.equal(params[1].name, 'format'); + assert.equal(params[1].optional, true); + + m = re.exec('/testing.json'); + + assert.equal(m.length, 4); + assert.equal(m[0], '/testing.json'); + assert.equal(m[1], 'testing'); + assert.equal(m[2], ''); + assert.equal(m[3], 'json'); + + m = re.exec('/test/route.json'); + + assert.equal(m.length, 4); + assert.equal(m[0], '/test/route.json'); + assert.equal(m[1], 'test'); + assert.equal(m[2], '/route'); + assert.equal(m[3], 'json'); + + m = re.exec('/test'); + + assert.equal(m.length, 4); + assert.equal(m[0], '/test'); + assert.equal(m[1], 'test'); + assert.equal(m[2], ''); + assert.equal(m[3], undefined); + + m = re.exec('.json'); + + assert.ok(!m); + }); + + it('should match optional trailing routes inside optional express param', function () { + var params = []; + var re = pathToRegExp('/:test*?', params); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, true); + + m = re.exec('/test/route'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/test/route'); + assert.equal(m[1], 'test'); + assert.equal(m[2], '/route'); + + m = re.exec('/test'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/test'); + assert.equal(m[1], 'test'); + assert.equal(m[2], ''); + + m = re.exec('/'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/'); + assert.equal(m[1], undefined); + assert.equal(m[2], undefined); + }); + + it('should do case insensitive matches', function () { + var m = pathToRegExp('/test').exec('/TEST'); + + assert.equal(m[0], '/TEST'); + }); + + it('should do case sensitive matches', function () { + var re = pathToRegExp('/test', null, { sensitive: true }); + var m; + + m = re.exec('/test'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/test'); + + m = re.exec('/TEST'); + + assert.ok(!m); + }); + + it('should do non-ending matches', function () { + var params = []; + var m = pathToRegExp('/:test', params, { end: false }).exec('/test/route'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], '/test'); + assert.equal(m[1], 'test'); + }); + + it('should match trailing slashes in non-ending non-strict mode', function () { + var params = []; + var re = pathToRegExp('/:test', params, { end: false }); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + m = re.exec('/test/'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/test/'); + assert.equal(m[1], 'test'); + }); + + it('should match trailing slashes in non-ending non-strict mode', function () { + var params = []; + var re = pathToRegExp('/route/', params, { end: false }); + var m; + + assert.equal(params.length, 0); + + m = re.exec('/route/'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route/'); + + m = re.exec('/route/test'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route'); + + m = re.exec('/route'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route'); + + m = re.exec('/route//'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route/'); + }); + + it('should match trailing slashing in non-ending strict mode', function () { + var params = []; + var re = pathToRegExp('/route/', params, { end: false, strict: true }); + + assert.equal(params.length, 0); + + m = re.exec('/route/'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route/'); + + m = re.exec('/route/test'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route/'); + + m = re.exec('/route'); + + assert.ok(!m); + + m = re.exec('/route//'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route/'); + }); + + it('should not match trailing slashes in non-ending strict mode', function () { + var params = []; + var re = pathToRegExp('/route', params, { end: false, strict: true }); + + assert.equal(params.length, 0); + + m = re.exec('/route'); + + assert.equal(m.length, 1); + assert.equal(m[0], '/route'); + + m = re.exec('/route/'); + + assert.ok(m.length, 1); + assert.equal(m[0], '/route'); + }); + + it('should match text after an express param', function () { + var params = []; + var re = pathToRegExp('/(:test)route', params); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + m = re.exec('/route'); + + assert.ok(!m); + + m = re.exec('/testroute'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/testroute'); + assert.equal(m[1], 'test'); + + m = re.exec('testroute'); + + assert.ok(!m); + }); + + it('should match text after an optional express param', function () { + var params = []; + var re = pathToRegExp('/(:test?)route', params); + var m; + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, true); + + m = re.exec('/route'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/route'); + assert.equal(m[1], undefined); + + m = re.exec('/testroute'); + + assert.equal(m.length, 2); + assert.equal(m[0], '/testroute'); + assert.equal(m[1], 'test'); + + m = re.exec('route'); + + assert.ok(!m); + }); + + it('should match optional formats', function () { + var params = []; + var re = pathToRegExp('/:test.:format?', params); + var m; + + assert.equal(params.length, 2); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + assert.equal(params[1].name, 'format'); + assert.equal(params[1].optional, true); + + m = re.exec('/route'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/route'); + assert.equal(m[1], 'route'); + assert.equal(m[2], undefined); + + m = re.exec('/route.json'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/route.json'); + assert.equal(m[1], 'route'); + assert.equal(m[2], 'json'); + }); + + it('should match full paths with format by default', function () { + var params = []; + var m = pathToRegExp('/:test', params).exec('/test.json'); + + assert.equal(params.length, 1); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + + assert.equal(m.length, 2); + assert.equal(m[0], '/test.json'); + assert.equal(m[1], 'test.json'); + }); + }); + + describe('regexps', function () { + it('should return the regexp', function () { + assert.deepEqual(pathToRegExp(/.*/), /.*/); + }); + }); + + describe('arrays', function () { + it('should join arrays parts', function () { + var re = pathToRegExp(['/test', '/route']); + + assert.ok(re.test('/test')); + assert.ok(re.test('/route')); + assert.ok(!re.test('/else')); + }); + + it('should match parts properly', function () { + var params = []; + var re = pathToRegExp(['/:test', '/test/:route'], params); + var m; + + assert.equal(params.length, 2); + assert.equal(params[0].name, 'test'); + assert.equal(params[0].optional, false); + assert.equal(params[1].name, 'route'); + assert.equal(params[1].optional, false); + + m = re.exec('/route'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/route'); + assert.equal(m[1], 'route'); + assert.equal(m[2], undefined); + + m = re.exec('/test/path'); + + assert.equal(m.length, 3); + assert.equal(m[0], '/test/path'); + assert.equal(m[1], undefined); + assert.equal(m[2], 'path'); + }); + }); +}); |