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