mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
process text/* if it appears in the middle of
HTTP_ACCEPT parameter
This commit is contained in:
@@ -120,7 +120,11 @@ module Mime
|
||||
params, q = header.split(/;\s*q=/)
|
||||
if params
|
||||
params.strip!
|
||||
list << AcceptItem.new(index, params, q) unless params.empty?
|
||||
if params =~ TRAILING_STAR_REGEXP
|
||||
parse_data_with_trailing_star($1).each { |m| list << AcceptItem.new(index, m.to_s, q) }
|
||||
else
|
||||
list << AcceptItem.new(index, params, q) unless params.empty?
|
||||
end
|
||||
end
|
||||
end
|
||||
list.sort!
|
||||
|
||||
@@ -29,6 +29,26 @@ class MimeTypeTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
test "parse text with trailing star at the beginning" do
|
||||
accept = "text/*, text/html, application/json, multipart/form-data"
|
||||
expect = [Mime::JSON, Mime::XML, Mime::ICS, Mime::HTML, Mime::CSS, Mime::CSV, Mime::TEXT, Mime::YAML, Mime::JS, Mime::MULTIPART_FORM]
|
||||
parsed = Mime::Type.parse(accept)
|
||||
assert_equal expect.size, parsed.size
|
||||
Range.new(0,expect.size-1).to_a.each do |index|
|
||||
assert_equal expect[index], parsed[index], "Failed for index number #{index}"
|
||||
end
|
||||
end
|
||||
|
||||
test "parse text with trailing star in the end" do
|
||||
accept = "text/html, application/json, multipart/form-data, text/*"
|
||||
expect = [Mime::HTML, Mime::JSON, Mime::MULTIPART_FORM, Mime::XML, Mime::ICS, Mime::CSS, Mime::CSV, Mime::JS, Mime::YAML, Mime::TEXT]
|
||||
parsed = Mime::Type.parse(accept)
|
||||
assert_equal 10, parsed.size
|
||||
Range.new(0,expect.size-1).to_a.each do |index|
|
||||
assert_equal expect[index], parsed[index], "Failed for index number #{index}"
|
||||
end
|
||||
end
|
||||
|
||||
test "parse text with trailing star" do
|
||||
accept = "text/*"
|
||||
expect = [Mime::JSON, Mime::XML, Mime::ICS, Mime::HTML, Mime::CSS, Mime::CSV, Mime::JS, Mime::YAML, Mime::TEXT].sort_by(&:to_s)
|
||||
|
||||
Reference in New Issue
Block a user