Sha256: 39470a7b393c2b6ac8c17db79e67146ef8d1426b2f8273eed3ad28bb087674fa

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe 'Request body streaming', reactor: true do
  include_context :server_client_pair

  let(:chunks) { [] }

  before do
    client.perform(request).sync
    Fiber.new do
      intercepted_requests[0].body.each do |chunk|
        chunks << chunk
      end
    end.resume
  end

  let(:request) { open_request }

  subject! do
    %w[foo bar baz].each do |chunk|
      request.body.write(chunk)
      tick
    end
    request.close
    tick
  end

  it 'progressively sends the body' do
    expect(intercepted_requests[0].headers)
      .to include('Transfer-Encoding' => 'chunked')

    expect(chunks).to eq(%w[foo bar baz])
  end
end

describe 'Response body streaming', reactor: true do
  include_context :server_client_pair

  let(:chunks) { [] }

  let(:response) { client.request(:get, '/streaming') }

  subject! { response }

  before do
    response.body.each do |chunk|
      chunks << chunk
    end
  end

  it 'progressively receives the body' do
    expect(chunks).to eq(%w[foo bar baz])
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
httpkit-0.6.0 spec/integration/streaming_spec.rb
httpkit-0.6.0.pre.5 spec/integration/streaming_spec.rb