123456789_123456789_123456789_123456789_123456789_

Class: ActionDispatch::TestRequest

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Request
Instance Chain:
Inherits: ActionDispatch::Request
Defined in: actionpack/lib/action_dispatch/testing/test_request.rb

Constant Summary

Http::Cache::Request - Included

HTTP_IF_MODIFIED_SINCE, HTTP_IF_NONE_MATCH

Http::MimeNegotiation - Included

BROWSER_LIKE_ACCEPTS, RESCUABLE_MIME_FORMAT_ERRORS

Http::Parameters - Included

DEFAULT_PARSERS, PARAMETERS_KEY

Http::FilterParameters - Included

ENV_MATCH, NULL_ENV_FILTER, NULL_PARAM_FILTER

Http::URL - Included

HOST_REGEXP, IP_HOST_REGEXP, PROTOCOL_REGEXP

ContentSecurityPolicy::Request - Included

NONCE, NONCE_DIRECTIVES, NONCE_GENERATOR, POLICY, POLICY_REPORT_ONLY

PermissionsPolicy::Request - Included

POLICY

Request - Inherited

ACTION_DISPATCH_REQUEST_ID, ENV_METHODS, HTTP_METHODS, HTTP_METHOD_LOOKUP, LOCALHOST, PASS_NOT_FOUND, RFC2518, RFC2616, RFC3253, RFC3648, RFC3744, RFC4791, RFC5323, RFC5789, TRANSFER_ENCODING

Class Attribute Summary

Request - Inherited

.ignore_accept_header,
.parameter_parsers

Returns the parameter parsers.

Class Method Summary

Request - Inherited

Instance Attribute Summary

Request - Inherited

#form_data?

Determine whether the request body contains form-data by checking the request Content-Type for one of the media-types: application/x-www-form-urlencoded or multipart/form-data.

#ignore_accept_header,
#local?

True if the request came from localhost, 127.0.0.1, or ::1.

#rack_request,
#remote_ip

Returns the IP address of client as a ::String, usually set by the RemoteIp middleware.

#remote_ip=,
#request_id

Returns the unique request id, which is based on either the X-Request-Id header that can be generated by a firewall, load balancer, or web server, or by the RequestId middleware (which sets the action_dispatch.request_id environment variable).

#request_method

Returns the HTTP method that the application should see.

#request_parameters

Alias for Request#POST.

#request_parameters=,
#route_uri_pattern

Returns the URI pattern of the matched route for the request, using the same format as ‘bin/rails routes`:

#session_options=,
#uuid
#xhr?
#xml_http_request?

Returns true if the X-Requested-With header contains “XMLHttpRequest” (case-insensitive), which may need to be manually added depending on the choice of JavaScript libraries and frameworks.

#controller_instance, #controller_instance=, #request_id=, #request_method=, #route_uri_pattern=, #routes, #routes=, #session=

Flash::RequestMethods - Included

#flash

Access the contents of the flash.

#flash=

PermissionsPolicy::Request - Included

ContentSecurityPolicy::Request - Included

Http::URL - Included

#secure_protocol,
#standard_port

Returns the standard port number for this request’s protocol.

#standard_port?

Returns whether this request is using the standard port.

#tld_length

Http::Parameters - Included

#path_parameters

Returns a hash with the parameters used to form the path of the request.

#path_parameters=

Http::MimeNegotiation - Included

#formats,
#formats=

Sets the formats by string extensions.

#should_apply_vary_header?, #variant,
#variant=

Sets the variant for template.

#params_readable?, #has_content_type?

Http::Cache::Request - Included

Instance Method Summary

Request - Inherited

#authorization

Returns the authorization header regardless of whether it was specified directly or through one of the proxy alternatives.

#body

The request body is an ::IO input stream.

#commit_csrf_token, #commit_flash,
#content_length

Returns the content length of the request as an integer.

#controller_class, #controller_class_for,
#fullpath

Returns the ::String full path including params of the last URL requested.

#GET

Override Rack’s GET method to support indifferent access.

#headers

Provides access to the request’s HTTP headers, for example:

#http_auth_salt,
#ip

Returns the IP address of client as a ::String.

#key?

Returns true if the request has a header matching the given key parameter.

#logger,
#media_type

The ::String MIME type of the request.

#method

Returns the original value of the environment’s REQUEST_METHOD, even if it was overridden by middleware.

#method_symbol

Returns a symbol form of the #method.

#original_fullpath

Returns a ::String with the last requested path including their params.

#original_url

Returns the original request URL as a ::String.

#POST

Override Rack’s POST method to support indifferent access.

#query_parameters

Alias for Request#GET.

#raw_post

Read the request body.

#request_method_symbol

Returns a symbol form of the #request_method.

#request_parameters_list, #reset_csrf_token, #reset_session,
#send_early_hints

Early Hints is an HTTP/2 status code that indicates hints to help a client start making preparations for processing the final response.

#server_software

Returns the lowercase name of the HTTP server software.

#check_method, #default_session, #fallback_request_parameters, #read_body_stream, #reset_stream, #body_stream, #commit_cookie_jar!, #engine_script_name, #engine_script_name=, #inspect, #raw_request_method

Flash::RequestMethods - Included

ContentSecurityPolicy::Request - Included

Http::URL - Included

#domain

Returns the domain part of a host, such as “rubyonrails.org” in “www.rubyonrails.org”.

#host

Returns the host for this request, such as “example.com”.

#host_with_port

Returns a host:port string for this request, such as “example.com” or “example.com:8080”.

#initialize,
#optional_port

Returns a number port suffix like 8080 if the port number of this request is not the default HTTP port 80 or HTTPS port 443.

#port

Returns the port number of this request as an integer.

#port_string

Returns a string port suffix, including colon, like “:8080” if the port number of this request is not the default HTTP port 80 or HTTPS port 443.

#protocol

Returns ‘https://’ if this is an SSL request and ‘http://’ otherwise.

#raw_host_with_port

Returns the host and port for this request, such as “example.com:8080”.

#server_port

Returns the requested port, such as 8080, based on SERVER_PORT.

#subdomain

Returns all the subdomains as a string, so “dev.www” would be returned for “dev.www.rubyonrails.org”.

#subdomains

Returns all the subdomains as an array, so ["dev", "www"] would be returned for “dev.www.rubyonrails.org”.

#url

Returns the complete URL used for this request.

Http::FilterParameters - Included

#filtered_env

Returns a hash of request.env with all sensitive data replaced.

#filtered_parameters

Returns a hash of parameters with all sensitive data replaced.

#filtered_path

Reconstructs a path with all sensitive GET parameters replaced.

#initialize,
#parameter_filter

Returns the ::ActiveSupport::ParameterFilter object used to filter in this request.

#env_filter, #filtered_query_string, #parameter_filter_for

Http::Parameters - Included

#parameters

Returns both GET and POST parameters in a single hash.

#params
#log_parse_error_once, #params_parsers, #parse_formatted_parameters

Http::MimeNegotiation - Included

#accepts

Returns the accepted MIME type for the request.

#content_mime_type

The MIME type of the HTTP request, such as [Mime](:xml).

#format

Returns the MIME type for the format used in the request.

#format=

Sets the format by string extension, which can be used to force custom formats that are not controlled by the extension.

#negotiate_mime

Returns the first MIME type that matches the provided array of MIME types.

#format_from_path_extension, #use_accept_header, #valid_accept_header

Http::Cache::Request - Included

#etag_matches?,
#fresh?

Check response freshness (‘Last-Modified` and ETag) against request If-Modified-Since and If-None-Match conditions.

#if_modified_since, #if_none_match, #if_none_match_etags, #not_modified?

Constructor Details

This class inherits a constructor from ActionDispatch::Request

Class Method Details

.create(env = {})

Create a new test request with default env values.

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 17

def self.create(env = {})
  env = Rails.application.env_config.merge(env) if defined?(Rails.application) && Rails.application
  env["rack.request.cookie_hash"] ||= {}.with_indifferent_access
  new(default_env.merge(env))
end

.default_env (private)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 23

def self.default_env
  DEFAULT_ENV
end

Instance Attribute Details

#accept=(mime_types) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 68

def accept=(mime_types)
  delete_header("action_dispatch.request.accepts")
  set_header("HTTP_ACCEPT", Array(mime_types).collect(&:to_s).join(","))
end

#action=(action_name) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 48

def action=(action_name)
  path_parameters[:action] = action_name.to_s
end

#host=(host) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 32

def host=(host)
  set_header("HTTP_HOST", host)
end

#if_modified_since=(last_modified) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 52

def if_modified_since=(last_modified)
  set_header("HTTP_IF_MODIFIED_SINCE", last_modified)
end

#if_none_match=(etag) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 56

def if_none_match=(etag)
  set_header("HTTP_IF_NONE_MATCH", etag)
end

#path=(path) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 44

def path=(path)
  set_header("PATH_INFO", path)
end

#port=(number) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 36

def port=(number)
  set_header("SERVER_PORT", number)
end

#remote_addr=(addr) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 60

def remote_addr=(addr)
  set_header("REMOTE_ADDR", addr)
end

#request_method=(method) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 28

def request_method=(method)
  super(method.to_s.upcase)
end

#request_uri=(uri) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 40

def request_uri=(uri)
  set_header("REQUEST_URI", uri)
end

#user_agent=(user_agent) (writeonly)

[ GitHub ]

  
# File 'actionpack/lib/action_dispatch/testing/test_request.rb', line 64

def user_agent=(user_agent)
  set_header("HTTP_USER_AGENT", user_agent)
end