水豚测试反向代理域

时间:2019-02-27 15:05:15

标签: ruby-on-rails testing rspec capybara capybara-webkit

我目前正在开发一个有趣的Rails应用程序。

我们在heroku上运行了两个应用程序。一个是一个基本的应用程序,它充当反向代理,它具有多个附加域,并且反向代理我们的主要应用程序(即Rails应用程序)(此应用程序基于主机进行查找,然后进行路由)。 / p>

此设置的原因是允许自定义域指向主应用程序上的“商店页面”,然后这些商店页面会指向原始域以进行结帐。

也许有一个例子可以更好地解释这两个领域: Seller.com platform.com

platform.com代表主应用程序的应用程序主机,seller.com是通过反向代理路由的域。 您可以在Seller.com上选择产品,然后最终在platform.com上结帐

在给定多个域的情况下,我们正在努力使用capybara在主应用程序中测试这种端到端流的方法,有没有办法通过欺骗反向代理或仅使用多个主机来处理此问题?

我尝试过的水豚配置如下

Capybara::Webkit.configure do |config|
  config.allow_unknown_urls
  config.ignore_ssl_errors
  config.skip_image_loading
  config.raise_javascript_errors = true
  config.allow_url("lvh.me")
  config.allow_url("*.lvh.me")
  config.allow_url("testdomain.me")
end

Capybara.configure do |config|
  config.always_include_port = true
  config.javascript_driver = :webkit
  config.default_max_wait_time = ENV.has_key?("CI") ? 60 : 10
  config.app_host = "http://lvh.me"
end

RSpec.configure do |config|
  config.include SubdomainHelper, type: :feature

  config.before(type: :request) do
    host! "lvh.me"
  end

  config.before(type: :feature) do
    default_url_options[:host] = "http://lvh.me:#{Capybara.server_port}"
  end
end

,然后在测试中,我同时尝试了visit "http://testdomain.me"和将capybara主机都设置为testdomain Capybara.config.host = "http://testdomain.me"(不知道这种方法将如何工作,因为我需要两个域同时工作)

1 个答案:

答案 0 :(得分:0)

您需要设置所有正在使用的域和子域,以解析为可访问AUT的IP地址。通常这将涉及编辑/etc/hosts或配置本地DNS服务器以报告正确的IP。