module ActionCable::Connection::TestCase::Behavior

Constants

DEFAULT_PATH

Attributes

connection[R]

Public Instance Methods

connect(path = ActionCable.server.config.mount_path, **request_params) click to toggle source

Performs connection attempt to exert connect on the connection under test.

Accepts request path as the first argument and the following request options:

  • params – URL parameters (Hash)

  • headers – request headers (Hash)

  • session – session data (Hash)

  • env – additional Rack env configuration (Hash)

# File lib/action_cable/connection/test_case.rb, line 195
def connect(path = ActionCable.server.config.mount_path, **request_params)
  path ||= DEFAULT_PATH

  connection = self.class.connection_class.allocate
  connection.singleton_class.include(TestConnection)
  connection.send(:initialize, build_test_request(path, **request_params))
  connection.connect if connection.respond_to?(:connect)

  # Only set instance variable if connected successfully
  @connection = connection
end
cookies() click to toggle source
# File lib/action_cable/connection/test_case.rb, line 215
def cookies
  @cookie_jar ||= TestCookieJar.new
end
disconnect() click to toggle source

Exert disconnect on the connection under test.

# File lib/action_cable/connection/test_case.rb, line 208
def disconnect
  raise "Must be connected!" if connection.nil?

  connection.disconnect if connection.respond_to?(:disconnect)
  @connection = nil
end

Private Instance Methods

build_test_request(path, params: nil, headers: {}, session: {}, env: {}) click to toggle source
# File lib/action_cable/connection/test_case.rb, line 220
def build_test_request(path, params: nil, headers: {}, session: {}, env: {})
  wrapped_headers = ActionDispatch::Http::Headers.from_hash(headers)

  uri = URI.parse(path)

  query_string = params.nil? ? uri.query : params.to_query

  request_env = {
    "QUERY_STRING" => query_string,
    "PATH_INFO" => uri.path
  }.merge(env)

  if wrapped_headers.present?
    ActionDispatch::Http::Headers.from_hash(request_env).merge!(wrapped_headers)
  end

  TestRequest.create(request_env).tap do |request|
    request.session = session.with_indifferent_access
    request.cookie_jar = cookies
  end
end