Estoy mono parcheando Capybara :: Sesión con un método set_headers que asigna a Capybara :: RackTest :: atributo de opciones del navegador (que he cambiado de un attr_reader a un attr_accessor).¿Cuál es la mejor manera de establecer encabezados de solicitud personalizados cuando se usa Capybara en las especificaciones de solicitud de RSpec?
Los parches:
class Capybara::RackTest::Browser
attr_accessor :options
end
class Capybara::Session
def set_headers(headers)
if driver.browser.respond_to?(:options=) #because we've monkey patched it above
options = driver.browser.options
if options.nil? || options[:headers].nil?
options ||= {}
options[:headers] = headers
else
options[:headers].merge!(headers)
end
else
raise Capybara::NotSupportedByDriverError
end
end
end
En mi especificación solicitud, que estoy haciendo:
page.set_headers("REMOTE_ADDR" => "1.2.3.4")
visit root_path
Esto funciona, pero me pregunto si hay una manera mejor, parece un poco exagerado para poder establecer un remote_ip/remote_addr personalizado en una solicitud. ¿Alguna idea?