diff options
author | Gibheer <gibheer@gmail.com> | 2013-01-29 15:28:59 +0100 |
---|---|---|
committer | Gibheer <gibheer@gmail.com> | 2013-01-29 15:28:59 +0100 |
commit | 335dbdd487cde05451078b18dbea6f87901d08e8 (patch) | |
tree | 8f0cd259229f3a2387fa206aad61c5e09144caf6 | |
parent | 27442f40613cb3a557ca7a0a9d34a4e4296072bd (diff) |
catch empty routes
This fixes a bug where an empty route would catch all requests resulting
in all routes found with the empty route.
-rw-r--r-- | lib/zero/router.rb | 2 | ||||
-rw-r--r-- | spec/unit/zero/router/call_spec.rb | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/zero/router.rb b/lib/zero/router.rb index 8d1273f..e5b513c 100644 --- a/lib/zero/router.rb +++ b/lib/zero/router.rb @@ -40,7 +40,7 @@ module Zero routes.each do |route, target| @routes[ Regexp.new( - route.gsub(VARIABLE_MATCH, VARIABLE_REGEX) + '$')] = target + '^' + route.gsub(VARIABLE_MATCH, VARIABLE_REGEX) + '$')] = target end end diff --git a/spec/unit/zero/router/call_spec.rb b/spec/unit/zero/router/call_spec.rb index 6f01e3c..683eca8 100644 --- a/spec/unit/zero/router/call_spec.rb +++ b/spec/unit/zero/router/call_spec.rb @@ -25,6 +25,13 @@ describe Zero::Router, '#call' do it_behaves_like "a sample app" end + context 'with empty path' do + let(:routes) {{ '' => wrong_app, '/welcome' => app }} + let(:env) { EnvGenerator.get('/welcome') } + + it_behaves_like "a sample app" + end + context 'with multiple router' do let(:routes) {{ '/foo' => app, '/wrong' => wrong_app }} let(:env) { EnvGenerator.get('/foo') } @@ -45,6 +52,14 @@ describe Zero::Router, '#call' do it_behaves_like "a sample app" end + context 'with empty route' do + let(:routes) {{ '' => wrong_app }} + let(:env) { EnvGenerator.get('/foo') } + let(:result) { ['Not found!'] } + let(:status_code) { 404 } + it_behaves_like "a sample app" + end + context 'with parameters' do let(:routes) {{ '/foo/:id' => app }} let(:env) { EnvGenerator.get('/foo/bar') } |