spec/outputs/http_spec.rb in logstash-output-http-5.7.0 vs spec/outputs/http_spec.rb in logstash-output-http-5.7.1
- old
+ new
@@ -253,11 +253,11 @@
before do
subject.multi_receive(events)
end
let(:last_request) { TestApp.last_request }
- let(:body) { last_request.body.read }
+ let(:body) { read_last_request_body(last_request) }
let(:content_type) { last_request.env["CONTENT_TYPE"] }
it "should receive the request" do
expect(last_request).to be_truthy
end
@@ -456,11 +456,11 @@
before { subject.register }
after { subject.close }
let(:last_request) { TestApp.last_request }
- let(:last_request_body) { last_request.body.read }
+ let(:last_request_body) { read_last_request_body(last_request) }
let(:event) { LogStash::Event.new("message" => "hello!") }
context 'with default (full) verification' do
@@ -528,5 +528,12 @@
end
end if tls_version_enabled_by_default?('TLSv1.3') && JOpenSSL::VERSION > '0.12' # due WEBrick uses OpenSSL
end
+
+# Pre-emptively rewind the retrieval of `last_request.body` - for form based endpoints, the body
+# is placed in params, and body is empty, requiring a `rewind` for the body to be available for comparison
+def read_last_request_body(last_request)
+ last_request.body.rewind
+ last_request.body.read
+end
\ No newline at end of file