ruby-on-rails - Capybara 测试反向代理域
问题描述
我目前正在开发一个具有有趣设置的 Rails 应用程序。
我们在 heroku 上运行了两个应用程序。一个是作为反向代理工作的基本应用程序,它附加了多个域,并且它反向代理到我们的主应用程序,这是一个 rails 应用程序(此应用程序基于主机进行查找,然后进行路由)。
此设置的原因是允许自定义域指向主应用程序上的“商店页面”,然后这些商店页面指向原始域以进行结帐。
也许一个例子会更好地解释它,2个域:seller.com platform.com
platform.com 代表主应用程序的应用程序主机,seller.com 是通过反向代理路由的域。在 Seller.com 上,您选择您的产品,然后最终在 platform.com 上结账
在给定多个域的情况下,我们正在努力寻找一种方法来使用水豚在我们的主应用程序中测试这种端到端流程,有没有办法通过欺骗反向代理或仅使用多个主机来处理这个问题?
我试过的水豚配置如下
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"
(不确定这种方法将如何工作,因为我需要两个域同时工作)
解决方案
您使用的所有域和子域都需要设置为解析为您的 AUT 可访问的 IP 地址。这通常涉及编辑/etc/hosts
或配置本地 DNS 服务器以报告正确的 ip。
推荐阅读
- python - 没有 sudo 访问的 ROS 中的 Odroid GPIO 引脚
- powershell - VSTS 中的 Update-AzureRmEventGridSubscription 未被识别为 cmdlet 的名称
- php - 使用 Laravel 从日期数组计算每个用户的年龄
- javascript - 不同系列的 Cutsom X 轴范围-highchart
- java - Spring Data JPA:org.hibernate.StaleStateException:批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1
- java - How to increase Maximum Memory Pool Size? Apache Tomcat 9
- android - 即使在授予运行时权限后也无法在设备的 Documents 文件夹中创建新文件夹
- python-3.x - 如何使用 Pandas.read_excel 在内存中打开 XLS 文件?
- php - 用户上传的图像未插入到表中
- algorithm - O(n) 中的连续子阵列解决方案