1
0
Fork 0
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:
Eugene Kenny 2019-08-04 00:35:49 +01:00
parent 6db2c426c0
commit 7cf445d3bd
6 changed files with 49 additions and 4 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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" } }