Sha256: 4b23d54a5181e793e16829f84ec75e1002a6c8970eadf54660d072d712d98918

Contents?: true

Size: 1.77 KB

Versions: 2

Compression:

Stored size: 1.77 KB

Contents

require 'request-replay/test'

describe RequestReplay do
  behaves_like :test

  request = lambda do |env, headers={}, read_wait=nil|
    Thread.new(RequestReplay.new(@env.merge(env), @hopt,
                                 :add_headers => headers,
                                 :read_wait   => read_wait)) do |replay|
      replay.start(&:read)
    end
  end

  after do
    Muack.verify
  end

  should 'GET' do
    @verify[request[{'REQUEST_METHOD' => 'GET'}, 'Host' => 'ex.com'], <<-HTTP]
GET /?q=1 HTTP/1.1\r
Host: ex.com\r
Pork: BEEF\r
\r
    HTTP
  end

  should 'POST' do
    @verify[request['REQUEST_METHOD' => 'POST',
                    'QUERY_STRING'   => ''    , # test no query string
                    'PATH_INFO'      => ''    , # test no path info
                    'rack.input' => StringIO.new("PAYLOAD\r\n\r\n")], <<-HTTP]
POST / HTTP/1.1\r
Host: localhost\r
Pork: BEEF\r
\r
PAYLOAD\r
\r
    HTTP
  end

  should 'read_wait' do
    read_wait = 5
    mock(IO).select(satisfy{ |rs| rs.size == 1 &&
                                  rs[0].kind_of?(IO) },
                    [], [], read_wait)

    @verify[request[{}, {}, read_wait], <<-HTTP]
GET /?q=1 HTTP/1.1\r
Host: localhost\r
Pork: BEEF\r
\r
    HTTP
  end

  should 'puts error' do
    any_instance_of(TCPSocket) do |sock|
      mock(sock).read{ raise 'ERROR' }
    end

    errors = StringIO.new
    begin
      request['rack.errors' => errors].value
    ensure
      @serv.accept.close
    end
    errors.string.should.start_with? '[RequestReplay] Error:'
  end

  should 'not affect Rack::Request' do
    input = StringIO.new('a=0&b=1')
    e     = {'rack.input' => input, 'REQUEST_METHOD' => 'POST'}
    t     = request[e]
    @serv.accept.close
    t.join
    Rack::Request.new(e).POST.should.eq('a' => '0', 'b' => '1')
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
request-replay-0.7.1 test/test_request-replay.rb
request-replay-0.7.0 test/test_request-replay.rb