Sha256: 18b7d589af7b00c45c25bddec14941cb85b0db58e9f6899bef92ab425c419ba8

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

require 'spec_helper'

describe Acfs::Middleware::MessagePackDecoder do
  let(:data)     { [{id: 1, name: "Anon"},{id: 2, name:"John", friends: [ 1 ]}] }
  let(:body)     { data.to_param }
  let(:headers)  { {} }
  let(:request)  { Acfs::Request.new "fubar" }
  let(:response) { Acfs::Response.new request, 200, headers, body }
  let(:decoder)  { Acfs::Middleware::MessagePackDecoder.new lambda { |req| req } }

  before do
    decoder.call request
  end

  context 'with Message Pack response' do
    let(:headers) { { 'Content-Type' => 'application/x-msgpack' } }
    let(:body)    { MessagePack.dump data }

    it 'should decode body data' do
      request.complete! response

      expect(response.data).to be == data.map(&:stringify_keys)
    end
  end

  context 'with invalid response' do
    let(:headers) { { 'Content-Type' => 'application/x-msgpack' } }
    let(:body)    { MessagePack.dump(data)[4..-4] }

    it 'should raise an error' do
      expect { request.complete! response }.to raise_error(MessagePack::MalformedFormatError)
    end
  end

  context 'without Message Pack response' do
    let(:headers) { { 'Content-Type' => 'application/text' } }
    let(:body)    { data.to_json }

    it 'should not decode non-MessagePack encoded responses' do
      request.complete! response

      expect(response.data).to be_nil
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
acfs-0.10.0 spec/acfs/middleware/msgpack_decoder_spec.rb
acfs-0.9.0 spec/acfs/middleware/msgpack_decoder_spec.rb
acfs-0.8.0 spec/acfs/middleware/msgpack_decoder_spec.rb
acfs-0.7.0 spec/acfs/middleware/msgpack_decoder_spec.rb
acfs-0.6.0 spec/acfs/middleware/msgpack_decoder_spec.rb