spec/sitehub/integration_spec.rb in sitehub-0.5.0.alpha4 vs spec/sitehub/integration_spec.rb in sitehub-0.5.0.alpha5
- old
+ new
@@ -5,12 +5,12 @@
let(:experiment1_url) { "#{downstream_url}/experiment1" }
let(:experiment2_url) { "#{downstream_url}/experiment2" }
before do
WebMock.enable!
- stub_request(:get, experiment1_url).to_return(body: 'hello')
- stub_request(:get, experiment2_url).to_return(body: 'experiment1_body')
+ stub_request(:get, experiment1_url).to_return(body: 'experiment1_body')
+ stub_request(:get, experiment2_url).to_return(body: 'experiment2_body')
end
let(:builder) do
SiteHub::Builder.new.tap do |builder|
builder.access_logger StringIO.new
@@ -22,11 +22,12 @@
split(label: :experiment1, percentage: 100) do
split percentage: 100, label: 'variant1', url: experiment1_url
end
split(label: :experiment2, percentage: 0) do
- split percentage: 100, label: 'variant1', url: experiment2_url
+ split percentage: 0, label: 'variant1', url: experiment2_url
+ split percentage: 100, label: 'variant2', url: experiment2_url
end
end
end
end
@@ -50,20 +51,19 @@
end
describe 'route affinity' do
context 'requested route cookie not present' do
it 'drops a cookie to keep you on the same path' do
- stub_request(:get, downstream_url).to_return(body: 'hello')
get('/endpoint')
expect(app.last_response.cookies[SiteHub::RECORDED_ROUTES_COOKIE][:value]).to eq('experiment1|variant1')
end
end
context 'requested route cookie present' do
it 'proxies to the preselected route' do
get('/endpoint', {}, 'HTTP_COOKIE' => "#{SiteHub::RECORDED_ROUTES_COOKIE}=experiment2|variant1")
- expect(app.last_response.body).to eq(['experiment1_body'])
+ expect(app.last_response.body).to eq(['experiment2_body'])
expect(app.last_response.cookies[SiteHub::RECORDED_ROUTES_COOKIE][:value]).to eq('experiment2|variant1')
end
end
end
@@ -76,17 +76,16 @@
#
# def middleware name
# create_middleware.tap do |clazz|
# clazz.class_eval do
# define_method :call do |env|
+ #
# callback = env['async.callback'] || env['async.orig_callback']
# env['async.orig_callback'] = env['async.callback'] = proc do |status, headers, body|
- # if body.is_a?(Rack::BodyProxy)
- # body = "#{name}, #{body.body.join}"
- # end
+ # body = body.body.join if body.is_a?(Rack::BodyProxy)
#
- # callback.call(status, headers, body)
+ # callback.call(status, headers, "#{name}, #{body}")
# end
# @app.call(env)
# end
# end
# end
@@ -151,17 +150,17 @@
# use middleware1
# proxy '/1' do
# use middleware2
# route label: :with_middleware, url: downstream_url
# end
- # # proxy '/2' => downstream_url
+ # proxy '/2' => downstream_url
# end
# end
#
# it 'adds it to that route only' do
# get('/1')
- # expect(app.last_response.body.join).to eq('middleware1, middleware2, hello')
+ # expect(app.last_response.body.join).to eq('middleware1, middleware2, hello')
# get('/2')
# expect(app.last_response.body.join).to eq('middleware1, hello')
# end
# end
#
@@ -175,10 +174,10 @@
# access_logger StringIO.new
#
# proxy '/1' do
# split percentage: 100, label: :experiment1 do
# use middleware1
- # split percentage: 100, label: :with_middleware do
+ # split percentage: 100, label: :with_middleware do
# use middleware2
# split percentage: 100, label: :with_nested_middleware, url: downstream_url
# end
# end
# end