Remove deprecated behavior on Request#content_type

This commit is contained in:
Rafael Mendonça França 2023-01-16 22:54:37 +00:00
parent eedd913421
commit 689b277733
No known key found for this signature in database
GPG Key ID: FC23B6D0F1EEE948
8 changed files with 29 additions and 78 deletions

@ -1,3 +1,11 @@
* Deprecate `config.action_dispatch.return_only_request_media_type_on_content_type`.
*Rafael Mendonça França*
* Remove deprecated behavior on `Request#content_type`.
*Rafael Mendonça França*
* Change `ActionController::Instrumentation` to pass `filtered_path` instead of `fullpath` in the event payload to filter sensitive query params
```ruby

@ -16,7 +16,20 @@ class InvalidType < ::Mime::Type::InvalidMimeType; end
included do
mattr_accessor :ignore_accept_header, default: false
cattr_accessor :return_only_media_type_on_content_type, default: false
def return_only_media_type_on_content_type=(value)
ActionDispatch.deprecator.warn(
"`config.action_dispatch.return_only_request_media_type_on_content_type` is deprecated and will" \
" be removed in Rails 7.2."
)
end
def return_only_media_type_on_content_type
ActionDispatch.deprecator.warn(
"`config.action_dispatch.return_only_request_media_type_on_content_type` is deprecated and will" \
" be removed in Rails 7.2."
)
end
end
# The MIME type of the HTTP request, such as Mime[:xml].
@ -33,19 +46,6 @@ def content_mime_type
end
end
def content_type
if self.class.return_only_media_type_on_content_type
ActionDispatch.deprecator.warn(
"Rails 7.1 will return Content-Type header without modification." \
" If you want just the MIME type, please use `#media_type` instead."
)
content_mime_type&.to_s
else
super
end
end
def has_content_type? # :nodoc:
get_header "CONTENT_TYPE"
end

@ -25,7 +25,6 @@ class Railtie < Rails::Railtie # :nodoc:
config.action_dispatch.use_cookies_with_metadata = false
config.action_dispatch.perform_deep_munge = true
config.action_dispatch.request_id_header = "X-Request-Id"
config.action_dispatch.return_only_request_media_type_on_content_type = true
config.action_dispatch.log_rescued_responses = true
config.action_dispatch.default_headers = {
@ -51,7 +50,9 @@ class Railtie < Rails::Railtie # :nodoc:
ActiveSupport.on_load(:action_dispatch_request) do
self.ignore_accept_header = app.config.action_dispatch.ignore_accept_header
self.return_only_media_type_on_content_type = app.config.action_dispatch.return_only_request_media_type_on_content_type
unless app.config.action_dispatch.respond_to?(:return_only_request_media_type_on_content_type)
self.return_only_media_type_on_content_type = app.config.action_dispatch.return_only_request_media_type_on_content_type
end
ActionDispatch::Request::Utils.perform_deep_munge = app.config.action_dispatch.perform_deep_munge
end

@ -1041,27 +1041,6 @@ class RequestMimeType < BaseRequestTest
assert_equal("application/xml; charset=UTF-8", request.content_type)
end
test "content type with the old behavior" do
original = ActionDispatch::Request.return_only_media_type_on_content_type
ActionDispatch::Request.return_only_media_type_on_content_type = true
request = stub_request("CONTENT_TYPE" => "application/xml; charset=UTF-8")
assert_equal(Mime[:xml], request.content_mime_type)
assert_equal("application/xml", request.media_type)
assert_deprecated(ActionDispatch.deprecator) do
assert_nil(request.content_charset)
end
assert_deprecated(ActionDispatch.deprecator) do
assert_equal({}, request.media_type_params)
end
assert_deprecated(ActionDispatch.deprecator) do
assert_equal("application/xml", request.content_type)
end
ensure
ActionDispatch::Request.return_only_media_type_on_content_type = original
end
test "user agent" do
assert_equal "TestAgent", stub_request("HTTP_USER_AGENT" => "TestAgent").user_agent
end

@ -50,8 +50,12 @@ Please refer to the [Changelog][action-pack] for detailed changes.
### Removals
* Remove deprecated behavior on `Request#content_type`
### Deprecations
* Deprecate `config.action_dispatch.return_only_request_media_type_on_content_type`.
* Deprecate `AbstractController::Helpers::MissingHelperError`
* Deprecate `ActionDispatch::IllegalStateError`.

@ -86,7 +86,6 @@ Below are the default values associated with each target version. In cases of co
- [`config.action_controller.wrap_parameters_by_default`](#config-action-controller-wrap-parameters-by-default): `true`
- [`config.action_dispatch.cookies_serializer`](#config-action-dispatch-cookies-serializer): `:json`
- [`config.action_dispatch.default_headers`](#config-action-dispatch-default-headers): `{ "X-Frame-Options" => "SAMEORIGIN", "X-XSS-Protection" => "0", "X-Content-Type-Options" => "nosniff", "X-Download-Options" => "noopen", "X-Permitted-Cross-Domain-Policies" => "none", "Referrer-Policy" => "strict-origin-when-cross-origin" }`
- [`config.action_dispatch.return_only_request_media_type_on_content_type`](#config-action-dispatch-return-only-request-media-type-on-content-type): `false`
- [`config.action_mailer.smtp_timeout`](#config-action-mailer-smtp-timeout): `5`
- [`config.action_view.apply_stylesheet_media_default`](#config-action-view-apply-stylesheet-media-default): `false`
- [`config.action_view.button_to_generates_button_tag`](#config-action-view-button-to-generates-button-tag): `true`
@ -1776,18 +1775,6 @@ config.action_dispatch.rescue_responses = {
Any exceptions that are not configured will be mapped to 500 Internal Server Error.
#### `config.action_dispatch.return_only_request_media_type_on_content_type`
Change the return value of `ActionDispatch::Request#content_type` to the
Content-Type header without modification.
The default value depends on the `config.load_defaults` target version:
| Starting with version | The default value is |
| --------------------- | -------------------- |
| (original) | `true` |
| 7.0 | `false` |
#### `config.action_dispatch.cookies_same_site_protection`
Configures the default value of the `SameSite` attribute when setting cookies.

@ -226,7 +226,6 @@ def load_defaults(target_version)
"X-Permitted-Cross-Domain-Policies" => "none",
"Referrer-Policy" => "strict-origin-when-cross-origin"
}
action_dispatch.return_only_request_media_type_on_content_type = false
action_dispatch.cookies_serializer = :json
end

@ -3847,33 +3847,6 @@ class Post < ActiveRecord::Base
assert_equal false, Rails.application.config.assets.unknown_asset_fallback
end
test "ActionDispatch::Request.return_only_media_type_on_content_type is false by default" do
app "development"
assert_equal false, ActionDispatch::Request.return_only_media_type_on_content_type
end
test "ActionDispatch::Request.return_only_media_type_on_content_type is true in the 6.1 defaults" do
remove_from_config '.*config\.load_defaults.*\n'
add_to_config 'config.load_defaults "6.1"'
app "development"
assert_equal true, ActionDispatch::Request.return_only_media_type_on_content_type
end
test "ActionDispatch::Request.return_only_media_type_on_content_type can be configured in the new framework defaults" do
remove_from_config '.*config\.load_defaults.*\n'
app_file "config/initializers/new_framework_defaults_7_0.rb", <<-RUBY
Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type = false
RUBY
app "development"
assert_equal false, ActionDispatch::Request.return_only_media_type_on_content_type
end
test "action_dispatch.log_rescued_responses is true by default" do
app "development"