class UriReservedCharactersRoutingTest

See RFC 3986, section 3.3 for allowed path characters.

Public Instance Methods

setup() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 17
def setup
  @set = ActionDispatch::Routing::RouteSet.new
  @set.draw do
    ActiveSupport::Deprecation.silence do
      get ":controller/:action/:variable/*additional"
    end
  end

  safe, unsafe = %w(: @ & = + $ , ;), %w(^ ? # [ ])
  hex = unsafe.map { |char| "%" + char.unpack("H2").first.upcase }

  @segment = "#{safe.join}#{unsafe.join}".freeze
  @escaped = "#{safe.join}#{hex.join}".freeze
end
test_route_generation_allows_passing_non_string_values_to_generated_helper() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 49
def test_route_generation_allows_passing_non_string_values_to_generated_helper
  assert_equal "/content/action/variable/1/2",
    url_for(@set,
      controller: "content",
      action: "action",
      variable: "variable",
      additional: [1, 2])
end
test_route_generation_escapes_unsafe_path_characters() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 32
def test_route_generation_escapes_unsafe_path_characters
  assert_equal "/content/act#{@escaped}ion/var#{@escaped}iable/add#{@escaped}itional-1/add#{@escaped}itional-2",
    url_for(@set,
      controller: "content",
      action: "act#{@segment}ion",
      variable: "var#{@segment}iable",
      additional: ["add#{@segment}itional-1", "add#{@segment}itional-2"])
end
test_route_recognition_unescapes_path_components() click to toggle source
# File actionpack/test/controller/routing_test.rb, line 41
def test_route_recognition_unescapes_path_components
  options = { controller: "content",
              action: "act#{@segment}ion",
              variable: "var#{@segment}iable",
              additional: "add#{@segment}itional-1/add#{@segment}itional-2" }
  assert_equal options, @set.recognize_path("/content/act#{@escaped}ion/var#{@escaped}iable/add#{@escaped}itional-1/add#{@escaped}itional-2")
end