mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
080edb444a
Calling self in an action of a controller generates an endless stream of characters, including the request object and all instances variables. This can be frustrating when using a debugger in a controller and accidentally calling `self` generates output for a couple of seconds. This shortens inspect to only show the class name. MyController.new.inspect # => "#<MyController:0x00000000005028>"
37 lines
1.1 KiB
Ruby
37 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "abstract_unit"
|
|
|
|
class MetalControllerInstanceTests < ActiveSupport::TestCase
|
|
class SimpleController < ActionController::Metal
|
|
def hello
|
|
self.response_body = "hello"
|
|
end
|
|
end
|
|
|
|
def test_response_does_not_have_default_headers
|
|
original_default_headers = ActionDispatch::Response.default_headers
|
|
|
|
ActionDispatch::Response.default_headers = {
|
|
"X-Frame-Options" => "DENY",
|
|
"X-Content-Type-Options" => "nosniff",
|
|
"X-XSS-Protection" => "1;"
|
|
}
|
|
|
|
response_headers = SimpleController.action("hello").call(
|
|
"REQUEST_METHOD" => "GET",
|
|
"rack.input" => -> { }
|
|
)[1]
|
|
|
|
assert_not response_headers.key?("X-Frame-Options")
|
|
assert_not response_headers.key?("X-Content-Type-Options")
|
|
assert_not response_headers.key?("X-XSS-Protection")
|
|
ensure
|
|
ActionDispatch::Response.default_headers = original_default_headers
|
|
end
|
|
|
|
def test_inspect
|
|
controller = SimpleController.new
|
|
assert_match(/\A#<MetalControllerInstanceTests::SimpleController:0x[0-9a-f]+>\z/, controller.inspect)
|
|
end
|
|
end
|