spec/spec_09/exchange_spec.rb in bunny-0.6.3.rc2 vs spec/spec_09/exchange_spec.rb in bunny-0.7
- old
+ new
@@ -1,162 +1,164 @@
+# encoding: utf-8
+
# exchange_spec.rb
# Assumes that target message broker/server has a user called 'guest' with a password 'guest'
# and that it is running on 'localhost'.
# If this is not the case, please change the 'Bunny.new' call below to include
# the relevant arguments e.g. @b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
-require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib bunny]))
+require "bunny"
describe 'Exchange' do
-
- before(:each) do
+
+ before(:each) do
@b = Bunny.new(:spec => '09')
- @b.start
- end
-
- it "should raise an error if instantiated as non-existent type" do
- lambda { @b.exchange('bogus_ex', :type => :bogus) }.should raise_error(Bunny::ForcedConnectionCloseError)
- @b.status.should == :not_connected
- end
-
- it "should allow a default direct exchange to be instantiated by specifying :type" do
- exch = @b.exchange('amq.direct', :type => :direct)
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'amq.direct'
- exch.type.should == :direct
- @b.exchanges.has_key?('amq.direct').should be(true)
- end
-
- it "should allow a default direct exchange to be instantiated without specifying :type" do
- exch = @b.exchange('amq.direct')
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'amq.direct'
- exch.type.should == :direct
- @b.exchanges.has_key?('amq.direct').should be(true)
- end
-
- it "should allow a default fanout exchange to be instantiated without specifying :type" do
- exch = @b.exchange('amq.fanout')
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'amq.fanout'
- exch.type.should == :fanout
- @b.exchanges.has_key?('amq.fanout').should be(true)
- end
-
- it "should allow a default topic exchange to be instantiated without specifying :type" do
- exch = @b.exchange('amq.topic')
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'amq.topic'
- exch.type.should == :topic
- @b.exchanges.has_key?('amq.topic').should be(true)
- end
+ @b.start
+ end
- it "should allow a default headers (amq.match) exchange to be instantiated without specifying :type" do
- exch = @b.exchange('amq.match')
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'amq.match'
- exch.type.should == :headers
- @b.exchanges.has_key?('amq.match').should be(true)
- end
-
- it "should allow a default headers (amq.headers) exchange to be instantiated without specifying :type" do
- exch = @b.exchange('amq.headers')
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'amq.headers'
- exch.type.should == :headers
- @b.exchanges.has_key?('amq.headers').should be(true)
- end
-
- it "should create an exchange as direct by default" do
- exch = @b.exchange('direct_defaultex')
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'direct_defaultex'
- exch.type.should == :direct
- @b.exchanges.has_key?('direct_defaultex').should be(true)
- end
-
- it "should be able to be instantiated as a direct exchange" do
- exch = @b.exchange('direct_exchange', :type => :direct)
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'direct_exchange'
- exch.type.should == :direct
- @b.exchanges.has_key?('direct_exchange').should be(true)
- end
-
- it "should be able to be instantiated as a topic exchange" do
- exch = @b.exchange('topic_exchange', :type => :topic)
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'topic_exchange'
- exch.type.should == :topic
- @b.exchanges.has_key?('topic_exchange').should be(true)
- end
-
- it "should be able to be instantiated as a fanout exchange" do
- exch = @b.exchange('fanout_exchange', :type => :fanout)
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'fanout_exchange'
- exch.type.should == :fanout
- @b.exchanges.has_key?('fanout_exchange').should be(true)
- end
+ it "should raise an error if instantiated as non-existent type" do
+ lambda { @b.exchange('bogus_ex', :type => :bogus) }.should raise_error(Bunny::ForcedConnectionCloseError)
+ @b.status.should == :not_connected
+ end
- it "should be able to be instantiated as a headers exchange" do
- exch = @b.exchange('headers_exchange', :type => :headers)
- exch.should be_an_instance_of(Bunny::Exchange09)
- exch.name.should == 'headers_exchange'
- exch.type.should == :headers
- @b.exchanges.has_key?('headers_exchange').should be(true)
- end
-
- it "should ignore the :nowait option when instantiated" do
- exch = @b.exchange('direct2_exchange', :nowait => true)
- end
-
- it "should be able to publish a message" do
- exch = @b.exchange('direct_exchange')
- exch.publish('This is a published message')
- end
+ it "should allow a default direct exchange to be instantiated by specifying :type" do
+ exch = @b.exchange('amq.direct', :type => :direct)
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'amq.direct'
+ exch.type.should == :direct
+ @b.exchanges.has_key?('amq.direct').should be(true)
+ end
+ it "should allow a default direct exchange to be instantiated without specifying :type" do
+ exch = @b.exchange('amq.direct')
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'amq.direct'
+ exch.type.should == :direct
+ @b.exchanges.has_key?('amq.direct').should be(true)
+ end
+
+ it "should allow a default fanout exchange to be instantiated without specifying :type" do
+ exch = @b.exchange('amq.fanout')
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'amq.fanout'
+ exch.type.should == :fanout
+ @b.exchanges.has_key?('amq.fanout').should be(true)
+ end
+
+ it "should allow a default topic exchange to be instantiated without specifying :type" do
+ exch = @b.exchange('amq.topic')
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'amq.topic'
+ exch.type.should == :topic
+ @b.exchanges.has_key?('amq.topic').should be(true)
+ end
+
+ it "should allow a default headers (amq.match) exchange to be instantiated without specifying :type" do
+ exch = @b.exchange('amq.match')
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'amq.match'
+ exch.type.should == :headers
+ @b.exchanges.has_key?('amq.match').should be(true)
+ end
+
+ it "should allow a default headers (amq.headers) exchange to be instantiated without specifying :type" do
+ exch = @b.exchange('amq.headers')
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'amq.headers'
+ exch.type.should == :headers
+ @b.exchanges.has_key?('amq.headers').should be(true)
+ end
+
+ it "should create an exchange as direct by default" do
+ exch = @b.exchange('direct_defaultex')
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'direct_defaultex'
+ exch.type.should == :direct
+ @b.exchanges.has_key?('direct_defaultex').should be(true)
+ end
+
+ it "should be able to be instantiated as a direct exchange" do
+ exch = @b.exchange('direct_exchange', :type => :direct)
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'direct_exchange'
+ exch.type.should == :direct
+ @b.exchanges.has_key?('direct_exchange').should be(true)
+ end
+
+ it "should be able to be instantiated as a topic exchange" do
+ exch = @b.exchange('topic_exchange', :type => :topic)
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'topic_exchange'
+ exch.type.should == :topic
+ @b.exchanges.has_key?('topic_exchange').should be(true)
+ end
+
+ it "should be able to be instantiated as a fanout exchange" do
+ exch = @b.exchange('fanout_exchange', :type => :fanout)
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'fanout_exchange'
+ exch.type.should == :fanout
+ @b.exchanges.has_key?('fanout_exchange').should be(true)
+ end
+
+ it "should be able to be instantiated as a headers exchange" do
+ exch = @b.exchange('headers_exchange', :type => :headers)
+ exch.should be_an_instance_of(Bunny::Exchange09)
+ exch.name.should == 'headers_exchange'
+ exch.type.should == :headers
+ @b.exchanges.has_key?('headers_exchange').should be(true)
+ end
+
+ it "should ignore the :nowait option when instantiated" do
+ exch = @b.exchange('direct2_exchange', :nowait => true)
+ end
+
+ it "should be able to publish a message" do
+ exch = @b.exchange('direct_exchange')
+ exch.publish('This is a published message')
+ end
+
it "should not modify the passed options hash when publishing a message" do
- exch = @b.exchange('direct_exchange')
+ exch = @b.exchange('direct_exchange')
opts = {:key => 'a', :persistent => true}
- exch.publish('', opts)
+ exch.publish('', opts)
opts.should == {:key => 'a', :persistent => true}
end
-
- it "should be able to return an undeliverable message" do
- exch = @b.exchange('return_exch')
- exch.publish('This message should be undeliverable', :immediate => true)
- ret_msg = @b.returned_message
- ret_msg.should be_an_instance_of(Hash)
- ret_msg[:payload].should == 'This message should be undeliverable'
- end
-
- it "should be able to return a message that exceeds maximum frame size" do
- exch = @b.exchange('return_exch')
- lg_msg = 'z' * 142000
- exch.publish(lg_msg, :immediate => true)
- ret_msg = @b.returned_message
- ret_msg.should be_an_instance_of(Hash)
- ret_msg[:payload].should == lg_msg
- end
-
- it "should report an error if delete fails" do
- exch = @b.exchange('direct_exchange')
- lambda { exch.delete(:exchange => 'bogus_ex') }.should raise_error(Bunny::ForcedChannelCloseError)
- @b.channel.active.should == false
- end
-
- it "should be able to be deleted" do
- exch = @b.exchange('direct_exchange')
- res = exch.delete
- res.should == :delete_ok
- @b.exchanges.has_key?('direct_exchange').should be(false)
- end
-
- it "should ignore the :nowait option when deleted" do
- exch = @b.exchange('direct2_exchange')
- exch.delete(:nowait => true)
- end
-
+
+ it "should be able to return an undeliverable message" do
+ exch = @b.exchange('return_exch')
+ exch.publish('This message should be undeliverable', :immediate => true)
+ ret_msg = @b.returned_message
+ ret_msg.should be_an_instance_of(Hash)
+ ret_msg[:payload].should == 'This message should be undeliverable'
+ end
+
+ it "should be able to return a message that exceeds maximum frame size" do
+ exch = @b.exchange('return_exch')
+ lg_msg = 'z' * 142000
+ exch.publish(lg_msg, :immediate => true)
+ ret_msg = @b.returned_message
+ ret_msg.should be_an_instance_of(Hash)
+ ret_msg[:payload].should == lg_msg
+ end
+
+ it "should report an error if delete fails" do
+ exch = @b.exchange('direct_exchange')
+ lambda { exch.delete(:exchange => 'bogus_ex') }.should raise_error(Bunny::ForcedChannelCloseError)
+ @b.channel.active.should == false
+ end
+
+ it "should be able to be deleted" do
+ exch = @b.exchange('direct_exchange')
+ res = exch.delete
+ res.should == :delete_ok
+ @b.exchanges.has_key?('direct_exchange').should be(false)
+ end
+
+ it "should ignore the :nowait option when deleted" do
+ exch = @b.exchange('direct2_exchange')
+ exch.delete(:nowait => true)
+ end
+
end