summaryrefslogtreecommitdiff
path: root/spec/support/unicorn.rb
blob: 0b01fc9e26caa83dffb64b64c123308dc68b535e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# frozen_string_literal: true

REQUEST_CLASSES = [
  ::Grape::Request,
  ::Rack::Request
].freeze

def request_body_class
  return ::Unicorn::TeeInput if defined?(::Unicorn)

  Class.new(StringIO) do
    def string
      raise NotImplementedError, '#string is only valid under Puma which uses StringIO, use #read instead'
    end
  end
end

RSpec.configure do |config|
  config.before(:each, :unicorn) do
    REQUEST_CLASSES.each do |request_class|
      allow_any_instance_of(request_class)
        .to receive(:body).and_wrap_original do |m, *args|
          request_body_class.new(m.call(*args).read)
        end
    end
  end
end