Sha256: b8dd1b79c4236bc17a6ed216a4eba16b1679001928b9cd3892681e3860b5ae54

Contents?: true

Size: 1.68 KB

Versions: 68

Compression:

Stored size: 1.68 KB

Contents

# encoding: utf-8

require "spec_helper"

# We need to require AMQ-Protocol manually.
# In the library this is required in the file
# amq/client.rb, but this is a unit test and
# we don't want to mess around with unecessary
# dependencies.
require "amq/protocol/client"
require "amq/protocol/frame"

# We have to use Kernel#load so extensions to the
# Logging module from client.rb will be overridden.
load "amq/client/framing/string/frame.rb"

describe AMQ::Client::Framing::String do
  subject do
    AMQ::Client::Framing::String::Frame
  end

  # Created by:
  # frame = AMQ::Protocol::Queue::Declare.encode(1, "tasks", false, false, false, false, {})
  # frame.encode
  # frame.payload
  before do
    data = ["\x01\x00\x00\x00\x00\x00\b"]
    data << "\x00\n\x00(\x01/\x00\x00"
    data << "\xCE"
    @string = data.join

    subject.stub(:decode_header).with(data.first).and_return([1, 0, data[1].bytesize])
  end

  it "should be able to decode frame type" do
    subject.decode(@string).should be_kind_of(AMQ::Protocol::MethodFrame)
  end

  it "should be able to decode channel" do
    subject.decode(@string).channel.should eql(0)
  end

  it "should be able to decode payload" do
    subject.decode(@string).payload.should eql("\x00\n\x00(\x01/\x00\x00")
  end

  it "should raise an error if the frame length is miscalculated" do
    data = @string[0..-2] + "too long" + "\xCE"
    string   = String.new(data)
    lambda { subject.decode(string) }.should raise_error(AMQ::Client::BadLengthError)
  end

  it "should raise an error if the frame doesn't end with FINAL_OCTET" do
    string = @string[0..-2] + "x"
    lambda { subject.decode(string) }.should raise_error(AMQ::Client::NoFinalOctetError)
  end
end

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
amq-client-0.7.0.alpha27 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha26 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha25 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha24 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha23 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha22 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha21 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha20 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha19 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha18 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha17 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha16 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha15 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha14 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha13 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha12 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha11 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha10 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha9 spec/client/framing/string_frame_spec.rb
amq-client-0.7.0.alpha8 spec/client/framing/string_frame_spec.rb