aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-11-15 13:37:05 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-11-15 13:37:27 -0800
commit0be181bfa03f8340fa4945f891409c25a804de7f (patch)
tree6863b4588c84f45931dcadf9aca890976bd3e6a2
parent91a6db90cf8b2c07af4cf64a9c587268106aadd5 (diff)
downloadrails-0be181bfa03f8340fa4945f891409c25a804de7f.tar.gz
rails-0be181bfa03f8340fa4945f891409c25a804de7f.tar.bz2
rails-0be181bfa03f8340fa4945f891409c25a804de7f.zip
make sure we are only doing sanity checking against regular expressions
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb2
-rw-r--r--actionpack/test/controller/action_pack_assertions_test.rb8
2 files changed, 9 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 63a22ad105..729582684e 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -114,7 +114,7 @@ module ActionDispatch
requirements.reverse_merge!(@scope[:constraints]) if @scope[:constraints]
@options.each { |k, v| requirements[k] = v if v.is_a?(Regexp) }
- requirements.each do |_, requirement|
+ requirements.values.grep(Regexp).each do |requirement|
if requirement.source =~ %r{\A(\\A|\^)|(\\Z|\\z|\$)\Z}
raise ArgumentError, "Regexp anchor characters are not allowed in routing requirements: #{requirement.inspect}"
end
diff --git a/actionpack/test/controller/action_pack_assertions_test.rb b/actionpack/test/controller/action_pack_assertions_test.rb
index 5a210aa9ec..22ccd2e6b3 100644
--- a/actionpack/test/controller/action_pack_assertions_test.rb
+++ b/actionpack/test/controller/action_pack_assertions_test.rb
@@ -171,6 +171,14 @@ class ActionPackAssertionsControllerTest < ActionController::TestCase
end
end
+ def test_string_constraint
+ with_routing do |set|
+ set.draw do |map|
+ match "photos", :to => 'action_pack_assertions#nothing', :constraints => {:subdomain => "admin"}
+ end
+ end
+ end
+
def test_assert_redirect_to_named_route_failure
with_routing do |set|
set.draw do