- B
- D
- G
- H
- P
- S
- X
- ActionDispatch::TestProcess
- ActiveSupport::Testing::ConstantLookup
- Testing
- ActionController::TemplateAssertions
- ActionDispatch::Assertions
| [R] | request | |
| [R] | response |
Simulate a DELETE request with the given parameters and set/volley the
response. See get for more details.
Simulate a GET request with the given parameters.
-
action: The controller action to call. -
parameters: The HTTP parameters that you want to pass. This may benil, a hash, or a string that is appropriately encoded (application/x-www-form-urlencodedormultipart/form-data). -
session: A hash of parameters to store in the session. This may benil. -
flash: A hash of parameters to store in the flash. This may benil.
You can also simulate POST, PATCH, PUT, DELETE, HEAD, and OPTIONS requests
with post, patch, put,
delete, head, and options.
Note that the request method is not verified. The different methods are available to make the tests more expressive.
Simulate a HEAD request with the given parameters and set/volley the
response. See get for more details.
# File actionpack/lib/action_controller/test_case.rb, line 538 def paramify_values(hash_or_array_or_value) case hash_or_array_or_value when Hash Hash[hash_or_array_or_value.map{|key, value| [key, paramify_values(value)] }] when Array hash_or_array_or_value.map {|i| paramify_values(i)} when Rack::Test::UploadedFile, ActionDispatch::Http::UploadedFile hash_or_array_or_value else hash_or_array_or_value.to_param end end
Simulate a PATCH request with the given parameters and set/volley the
response. See get for more details.
Simulate a POST request with the given parameters and set/volley the
response. See get for more details.
# File actionpack/lib/action_controller/test_case.rb, line 551 def process(action, http_method = 'GET', *args) check_required_ivars if args.first.is_a?(String) && http_method != 'HEAD' @request.env['RAW_POST_DATA'] = args.shift end parameters, session, flash = args # Ensure that numbers and symbols passed as params are converted to # proper params, as is the case when engaging rack. parameters = paramify_values(parameters) if html_format?(parameters) @html_document = nil unless @controller.respond_to?(:recycle!) @controller.extend(Testing::Functional) @controller.class.class_eval { include Testing } end @request.recycle! @response.recycle! @controller.recycle! @request.env['REQUEST_METHOD'] = http_method parameters ||= {} controller_class_name = @controller.class.anonymous? ? "anonymous" : @controller.class.controller_path @request.assign_parameters(@routes, controller_class_name, action.to_s, parameters) @request.session.update(session) if session @request.flash.update(flash || {}) @controller.request = @request @controller.response = @response build_request_uri(action, parameters) name = @request.parameters[:action] @controller.recycle! @controller.process(name) if cookies = @request.env['action_dispatch.cookies'] unless @response.committed? cookies.write(@response) end end @response.prepare! @assigns = @controller.respond_to?(:view_assigns) ? @controller.view_assigns : {} @request.session['flash'] = @request.flash.to_session_value @request.session.delete('flash') if @request.session['flash'].blank? @response end
Simulate a PUT request with the given parameters and set/volley the
response. See get for more details.
# File actionpack/lib/action_controller/test_case.rb, line 610 def setup_controller_request_and_response @controller = nil unless defined? @controller response_klass = TestResponse if klass = self.class.controller_class if klass < ActionController::Live response_klass = LiveTestResponse end unless @controller begin @controller = klass.new rescue warn "could not construct controller #{klass}" if $VERBOSE end end end @request = build_request @response = build_response response_klass @response.request = @request if @controller @controller.request = @request @controller.params = {} end end
# File actionpack/lib/action_controller/test_case.rb, line 528 def xml_http_request(request_method, action, parameters = nil, session = nil, flash = nil) @request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' @request.env['HTTP_ACCEPT'] ||= [Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ') __send__(request_method, action, parameters, session, flash).tap do @request.env.delete 'HTTP_X_REQUESTED_WITH' @request.env.delete 'HTTP_ACCEPT' end end