Correctly track hijacked requests

This commit is contained in:
Sam
2017-11-28 16:47:20 +11:00
parent b3b55e18d1
commit df84e1c358
5 changed files with 106 additions and 19 deletions

View File

@ -6,15 +6,16 @@ describe Hijack do
include Hijack
def initialize
def initialize(env = {})
@io = StringIO.new
self.request = ActionController::TestRequest.new({
env.merge!(
"rack.hijack" => lambda { @io },
"rack.input" => StringIO.new
},
nil,
nil
)
self.request = ActionController::TestRequest.new(env, nil, nil)
# we need this for the 418
self.response = ActionDispatch::Response.new
end
@ -29,6 +30,43 @@ describe Hijack do
Hijack::Tester.new
end
context "Request Tracker integration" do
let :logger do
lambda do |env, data|
@calls += 1
@status = data[:status]
@total = data[:timing][:total_duration]
end
end
before do
Middleware::RequestTracker.register_detailed_request_logger logger
@calls = 0
end
after do
Middleware::RequestTracker.unregister_detailed_request_logger logger
end
it "can properly track execution" do
app = lambda do |env|
tester = Hijack::Tester.new(env)
tester.hijack_test do
render body: "hello", status: 201
end
end
env = {}
middleware = Middleware::RequestTracker.new(app)
middleware.call(env)
expect(@calls).to eq(1)
expect(@status).to eq(201)
expect(@status).to be > 0
end
end
it "dupes the request params and env" do
orig_req = tester.request
copy_req = nil