spec/sitehub/middleware/forward_proxies_spec.rb in sitehub-0.4.8 vs spec/sitehub/middleware/forward_proxies_spec.rb in sitehub-0.4.9
- old
+ new
@@ -3,46 +3,52 @@
class SiteHub
module Middleware
describe ForwardProxies do
let(:base_url) { 'http://google.com' }
let(:application_root) { '/application_url' }
+
let(:forward_proxy_builder) do
- ForwardProxyBuilder.new(mapped_path: application_root).tap do |builder|
- builder.split url: base_url, label: :current, percentage: 100
- end
+ subject.values.first
end
subject do
- described_class.new.tap do |route_set|
- route_set << forward_proxy_builder
+ base_url = base_url()
+ described_class.new(:cookie_name).tap do |route_set|
+ route_set.add_proxy(mapped_path: application_root) do |builder|
+ builder.split url: base_url, label: :current, percentage: 100
+ end
end
end
before do
subject.init
end
describe '#init' do
it 'builds all of the forward_proxies' do
- expect(subject.forward_proxies[application_root]).to receive(:build).and_call_original
+ expect(subject[application_root]).to receive(:build).and_call_original
subject.init
end
end
describe '#mapped_route' do
let(:request) { Rack::Request.new({}) }
- let(:more_specific_proxy_builder) do
- ForwardProxyBuilder.new(url: "#{base_url}/sub_url", mapped_path: "#{application_root}/sub_url")
+
+ it 'uses the id in the sitehub_cookie to resolve the correct route' do
+ request.cookies[:cookie_name] = :preset_id
+ expect(forward_proxy_builder).to receive(:resolve).with(id: :preset_id, env: request.env).and_call_original
+ subject.mapped_proxy(path: application_root, request: request)
end
context 'regex match on path' do
let(:fuzzy_matcher) do
- ForwardProxyBuilder.new(url: "#{base_url}/$1/view", mapped_path: %r{#{application_root}/(.*)/view})
+ subject.values.first
end
+
subject do
- described_class.new.tap do |route_set|
- route_set << fuzzy_matcher
+ described_class.new(:cookie_name).tap do |route_set|
+ route_set.add_proxy url: "#{base_url}/$1/view", mapped_path: %r{#{application_root}/(.*)/view}
end
end
it 'matches and subsitutes the captured group' do
mapped_endpoint = subject.mapped_proxy(path: "#{application_root}/123/view", request: request)
@@ -58,13 +64,17 @@
expect(mapped_endpoint).to eq(expected_endpoint)
end
end
context 'when more specific route is configured first' do
+ let(:more_specific_proxy_builder) do
+ subject.values.first
+ end
+
subject do
- described_class.new.tap do |route_set|
- route_set << more_specific_proxy_builder
- route_set << forward_proxy_builder
+ described_class.new(:cookie_name).tap do |route_set|
+ route_set.add_proxy(url: "#{base_url}/sub_url", mapped_path: "#{application_root}/sub_url")
+ route_set.add_proxy(mapped_path: application_root, url: base_url)
end
end
it 'matches the first endpoint' do
expected_endpoint = more_specific_proxy_builder.resolve(env: {})