# # 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. # $:.unshift File.join(File.dirname(__FILE__), "..", "lib") require 'test/unit' require 'flexmock/test_unit' require 'cqpid' require 'qpid/connection' class TestConnection < Test::Unit::TestCase def setup @connection_impl = flexmock("connection_impl") @other_connection = flexmock("other_connection") @other_connection_impl = flexmock("other_connection_impl") @cqpid_connection = flexmock(Cqpid::Connection) @session = flexmock("session") @session_name = "test-session" @url = "localhost" @options = {} @connection = Qpid::Messaging::Connection.new(@url, @options, @connection_impl) end def test_create_with_username_and_password @cqpid_connection. should_receive(:new). once.with("localhost", {"username" => "username", "password" => "password"}). and_return(@connection_impl) @connection_impl. should_receive(:open). once result = Qpid::Messaging::Connection.new("localhost", :username => "username", :password => "password") result.open assert_same @connection_impl, result.connection_impl end def test_create_with_hostname result = Qpid::Messaging::Connection.new("localhost") assert_not_nil result end def test_open @cqpid_connection. should_receive(:new). once. with(@url, {}). and_return(@connection_impl) @connection_impl. should_receive(:open). once @connection.open assert_same @connection_impl, @connection.connection_impl end def test_check_open_when_open @connection_impl. should_receive(:isOpen). once. and_return(true) assert @connection.open? end def test_check_open_before_connection result = Qpid::Messaging::Connection.new("hostname") assert !result.open? end def test_check_open_when_closed @connection_impl. should_receive(:isOpen). once. and_return(false) assert !@connection.open? end def test_close_an_unopened_session @connection_impl. should_receive(:isOpen). once. and_return(false) @connection.close end def test_close @connection_impl. should_receive(:isOpen). once. and_return(true). should_receive(:close). once @connection.close end def test_create_session_without_name @connection_impl. should_receive(:isOpen). once. and_return(true). should_receive(:createSession). once. with(""). and_return(@session) result = @connection.create_session assert_not_nil result assert_same @session, result.session_impl end def test_create_session @connection_impl. should_receive(:isOpen). once. and_return(true). should_receive(:createSession). once. with(@session_name). and_return(@session) result = @connection.create_session :name => @session_name assert_not_nil result assert_same @session, result.session_impl end def test_create_session_raises_exception_when_closed @connection_impl. should_receive(:isOpen). once. and_return(false) assert_raise(RuntimeError) {@connection.create_session @session_name} end def test_create_transactional_session @connection_impl. should_receive(:isOpen). once. and_return(true). should_receive(:createTransactionalSession). once. with(""). and_return(@session) result = @connection.create_session :transactional => true assert_not_nil result assert_same @session, result.session_impl end def test_authenticated_username_when_not_connected @connection_impl. should_receive(:isOpen). once. and_return(false) result = @connection.authenticated_username assert_nil result end def test_authenticated_username @connection_impl. should_receive(:isOpen). once. and_return(true). should_receive(:getAuthenticatedUsername). once. and_return("farkle") result = @connection.authenticated_username assert_equal "farkle", result end def test_get_session_with_invalid_name @connection_impl. should_receive(:getSession). once. with(@session_name). and_return(nil) result = @connection.session @session_name assert_nil result end # APIs inherited from Handle def test_is_valid @connection_impl. should_receive(:isValid). once. and_return(true) assert @connection.valid? end def test_is_null @connection_impl. should_receive(:isNull). once. and_return(false) assert !@connection.null? end def test_swap @other_connection. should_receive(:connection_impl). once. and_return(@other_connection_impl) @connection_impl. should_receive(:swap). once. with(@other_connection_impl) @connection.swap @other_connection end end