Sha256: afe578a2b147577d1c93b9735de7196c04100ab771fb20e6f76c082b36d6700e

Contents?: true

Size: 1.35 KB

Versions: 7

Compression:

Stored size: 1.35 KB

Contents

require 'zlib'

describe Dap::Filter::FilterDecodeHTTPReply do
  describe '.decode' do

    let(:filter) { described_class.new(['data']) }


    context 'decoding non-HTTP response' do
      let(:decode) { filter.decode("This\r\nis\r\nnot\r\nHTTP\r\n\r\n") }
      it 'returns an empty hash' do
        expect(decode).to eq({})
      end
    end

    context 'decoding uncompressed response' do
      let(:decode) { filter.decode("HTTP/1.0 200 OK\r\nHeader1: value1\r\n\r\nstuff") }

      it 'correctly sets status code' do
        expect(decode['http_code']).to eq(200)
      end

      it 'correctly sets status message' do
        expect(decode['http_message']).to eq('OK')
      end

      it 'correctly sets body' do
        expect(decode['http_body']).to eq('stuff')
      end

      it 'correct extracts header(s)' do
        expect(decode['http_raw_headers']).to eq({'header1' => 'value1'})
      end
    end

    context 'decoding gzip compressed response' do
      let(:body) {
        io = StringIO.new
        io.set_encoding('ASCII-8BIT')
        gz = Zlib::GzipWriter.new(io)
        gz.write('stuff')
        gz.close
        io.string
      }
      let(:decode) { filter.decode("HTTP/1.0 200 OK\r\nContent-encoding: gzip\r\n\r\n#{body}") }

      it 'correctly decompresses body' do
        expect(decode['http_body']).to eq('stuff')
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dap-0.0.17 spec/dap/filter/http_filter_spec.rb
dap-0.0.16 spec/dap/filter/http_filter_spec.rb
dap-0.0.15 spec/dap/filter/http_filter_spec.rb
dap-0.0.14 spec/dap/filter/http_filter_spec.rb
dap-0.0.13 spec/dap/filter/http_filter_spec.rb
dap-0.0.12 spec/dap/filter/http_filter_spec.rb
dap-0.0.11 spec/dap/filter/http_filter_spec.rb