mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Use media_type instead of content_type internally
These calls to `content_type` were triggering the deprecation from
c631e8d011
in upgraded applications.
We can use `media_type` in all of these cases to avoid the deprecation.
This commit is contained in:
parent
6db2c426c0
commit
7cf445d3bd
6 changed files with 49 additions and 4 deletions
|
@ -163,18 +163,18 @@ module ActionController
|
|||
|
||||
"/**/#{options[:callback]}(#{json})"
|
||||
else
|
||||
self.content_type ||= Mime[:json]
|
||||
self.content_type = Mime[:json] if media_type.nil?
|
||||
json
|
||||
end
|
||||
end
|
||||
|
||||
add :js do |js, options|
|
||||
self.content_type ||= Mime[:js]
|
||||
self.content_type = Mime[:js] if media_type.nil?
|
||||
js.respond_to?(:to_js) ? js.to_js(options) : js
|
||||
end
|
||||
|
||||
add :xml do |xml, options|
|
||||
self.content_type ||= Mime[:xml]
|
||||
self.content_type = Mime[:xml] if media_type.nil?
|
||||
xml.respond_to?(:to_xml) ? xml.to_xml(options) : xml
|
||||
end
|
||||
end
|
||||
|
|
|
@ -280,7 +280,7 @@ module ActionController #:nodoc:
|
|||
|
||||
# Check for cross-origin JavaScript responses.
|
||||
def non_xhr_javascript_response? # :doc:
|
||||
%r(\A(?:text|application)/javascript).match?(content_type) && !request.xhr?
|
||||
%r(\A(?:text|application)/javascript).match?(media_type) && !request.xhr?
|
||||
end
|
||||
|
||||
AUTHENTICITY_TOKEN_LENGTH = 32
|
||||
|
|
|
@ -32,4 +32,13 @@ class RenderJSTest < ActionController::TestCase
|
|||
get :show_partial, format: "js", xhr: true
|
||||
assert_equal "partial js", @response.body
|
||||
end
|
||||
|
||||
def test_should_not_trigger_content_type_deprecation
|
||||
original = ActionDispatch::Response.return_only_media_type_on_content_type
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = true
|
||||
|
||||
assert_not_deprecated { get :render_vanilla_js_hello, xhr: true }
|
||||
ensure
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = original
|
||||
end
|
||||
end
|
||||
|
|
|
@ -133,4 +133,22 @@ class RenderJsonTest < ActionController::TestCase
|
|||
get :render_json_without_options
|
||||
assert_equal '{"a":"b"}', @response.body
|
||||
end
|
||||
|
||||
def test_should_not_trigger_content_type_deprecation
|
||||
original = ActionDispatch::Response.return_only_media_type_on_content_type
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = true
|
||||
|
||||
assert_not_deprecated { get :render_json_hello_world }
|
||||
ensure
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = original
|
||||
end
|
||||
|
||||
def test_should_not_trigger_content_type_deprecation_with_callback
|
||||
original = ActionDispatch::Response.return_only_media_type_on_content_type
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = true
|
||||
|
||||
assert_not_deprecated { get :render_json_hello_world_with_callback, xhr: true }
|
||||
ensure
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = original
|
||||
end
|
||||
end
|
||||
|
|
|
@ -98,4 +98,13 @@ class RenderXmlTest < ActionController::TestCase
|
|||
get :implicit_content_type, format: "atom"
|
||||
assert_equal Mime[:atom], @response.media_type
|
||||
end
|
||||
|
||||
def test_should_not_trigger_content_type_deprecation
|
||||
original = ActionDispatch::Response.return_only_media_type_on_content_type
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = true
|
||||
|
||||
assert_not_deprecated { get :render_with_to_xml }
|
||||
ensure
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = original
|
||||
end
|
||||
end
|
||||
|
|
|
@ -591,6 +591,15 @@ module RequestForgeryProtectionTests
|
|||
end
|
||||
end
|
||||
|
||||
def test_should_not_trigger_content_type_deprecation
|
||||
original = ActionDispatch::Response.return_only_media_type_on_content_type
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = true
|
||||
|
||||
assert_not_deprecated { get :same_origin_js, xhr: true }
|
||||
ensure
|
||||
ActionDispatch::Response.return_only_media_type_on_content_type = original
|
||||
end
|
||||
|
||||
def test_should_not_raise_error_if_token_is_not_a_string
|
||||
assert_blocked do
|
||||
patch :index, params: { custom_authenticity_token: { foo: "bar" } }
|
||||
|
|
Loading…
Reference in a new issue