blob: 811abf36e9569ce9f200256bdc312ec85ef49db6 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
require 'spec_helper'
module Qpid
module Messaging
describe Connection do
before(:each) do
@session_impl = double('Cqpid::Session')
@connection_impl = double('Cqpid::Connection')
@connection = Qpid::Messaging::Connection.new :impl => @connection_impl
end
it "accepts options on construction" do
expect {
connection = Qpid::Messaging::Connection.new :options => {:username => "foo"}
connection.options.should include("username")
}.to_not raise_error
end
it "returns the underlying implementation" do
impl = @connection.connection_impl
impl.should == @connection_impl
end
it "opens the connection" do
@connection_impl.should_receive(:open)
@connection.open
end
it "closes the connection" do
@connection_impl.should_receive(:close)
@connection.close
end
it "retrieves a session by name" do
@connection_impl.should_receive(:getSession).
with("farkle").
and_return(@session_impl)
session = @connection.session "farkle"
session.session_impl.should == @session_impl
end
it "raises an error when a session name is invalid" do
@connection_impl.should_receive(:getSession).
with("farkle").
and_raise(RuntimeError)
expect {
@connection.session "farkle"
}.to raise_error(SessionNameException)
end
####################################################################
# test conditions for when a connection is not connected to a broker
####################################################################
describe "when closed" do
before(:each) do
@connection_impl.should_receive(:isOpen).
and_return(false)
end
it "returns false when not connected to a broker" do
open = @connection.open?
open.should == false
end
it "should raise an error when creating a session on a closed connection" do
expect {
@connection.create_session
}.to raise_error(RuntimeError)
end
it "raises an error when creating a transactional session on a closed connection" do
expect {
@connection.create_session :transactional => true
}.to raise_error(RuntimeError)
end
it "raises an error when creating a named session on a closed connection" do
expect {
@connection.create_session :name => "test", :transactional => true
}.to raise_error(RuntimeError)
end
it "returns a null username when not connected" do
username = @connection.authenticated_username
username.should be_nil
end
end
#########################################################
# test conditions for when a connection must be connected
#########################################################
describe "when connected" do
before(:each) do
@connection_impl.should_receive(:isOpen).
and_return(true)
end
it "returns true when connected to a broker" do
open = @connection.open?
open.should == true
end
it "creates a session" do
@connection_impl.should_receive(:createSession).
and_return(@session_impl)
session = @connection.create_session
session.session_impl.should == @session_impl
end
it "creates a named session with a name when provided" do
@connection_impl.should_receive(:createSession).with("farkle").
and_return(@session_impl)
session = @connection.create_session :name => "farkle"
session.session_impl.should == @session_impl
end
it "creates a transactional session when specified" do
@connection_impl.should_receive(:createTransactionalSession).
and_return(@session_impl)
session = @connection.create_session :transactional => true
session.session_impl.should == @session_impl
end
it "creates a named transactional session when specified" do
@connection_impl.should_receive(:createTransactionalSession).
with("farkle").
and_return(@session_impl)
session = @connection.create_session :transactional => true, :name => "farkle"
session.session_impl.should == @session_impl
end
it "returns the authenticated username when connected" do
@connection_impl.should_receive(:getAuthenticatedUsername).
and_return("mcpierce")
username = @connection.authenticated_username
username.should == "mcpierce"
end
end
end
end
end