def test_ssl_wrap_socket_with_none_ssl_options(self): params = pika.ConnectionParameters(ssl_options=None) self.assertIsNone(params.ssl_options) with mock.patch('pika.connection.Connection.connect'): conn = base_connection.BaseConnection(parameters=params) with mock.patch('pika.adapters.base_connection' '.ssl.wrap_socket') as wrap_socket_mock: sock_mock = mock.Mock() conn._wrap_socket(sock_mock) wrap_socket_mock.assert_called_once_with( sock_mock, do_handshake_on_connect=conn.DO_HANDSHAKE)
def test_ssl_wrap_socket_with_default_ssl_options_obj( self, wrap_socket_mock): ssl_options = pika.SSLOptions(context=ssl.create_default_context()) params = pika.ConnectionParameters(ssl_options=ssl_options) self.assertIs(params.ssl_options, ssl_options) with mock.patch('pika.connection.Connection.connect'): conn = base_connection.BaseConnection(parameters=params) sock_mock = mock.Mock() conn._wrap_socket(sock_mock) wrap_socket_mock.assert_called_once_with( sock_mock, server_side=False, do_handshake_on_connect=conn.DO_HANDSHAKE, suppress_ragged_eofs=True, server_hostname=None)
def test_base_connection_timeout(self): with self.assertRaises(exceptions.AMQPConnectionError) as err_ctx: with mock.patch( 'pika.adapters.base_connection.BaseConnection' '.add_timeout', return_value='timer'): with mock.patch( 'pika.adapters.base_connection.BaseConnection' '._create_tcp_connection_socket', return_value=mock.Mock( spec_set=socket.socket, connect=mock.Mock(side_effect=mock_timeout)) ) as create_sock_mock: params = pika.ConnectionParameters(socket_timeout=2.0) conn = base_connection.BaseConnection(params) conn._on_connect_timer() create_sock_mock.return_value.settimeout.assert_called_with(2.0) self.assertIn('timeout', str(err_ctx.exception))
def test_ssl_wrap_socket_with_dict_ssl_options(self): ssl_options = dict(ssl='options', handshake=False) params = pika.ConnectionParameters(ssl_options=ssl_options) self.assertEqual(params.ssl_options, ssl_options) with mock.patch('pika.connection.Connection.connect'): conn = base_connection.BaseConnection(parameters=params) with mock.patch('pika.adapters.base_connection' '.ssl.wrap_socket') as wrap_socket_mock: sock_mock = mock.Mock() conn._wrap_socket(sock_mock) wrap_socket_mock.assert_called_once_with( sock_mock, do_handshake_on_connect=conn.DO_HANDSHAKE, ssl='options', handshake=False)
def test_ssl_wrap_socket_with_ssl_options_obj(self, wrap_socket_mock, set_ciphers_mock, load_verify_mock, load_certs_mock): ssl_options = pika.SSLOptions(certfile='/some/cert/file.crt', keyfile='/some/key/file.crt', key_password='******', cafile='/some/ca/file.crt', capath='/some/ca/path', cadata='/some/data/or/something', ciphers='ciphers', server_hostname='some.virtual.host', do_handshake_on_connect=False, suppress_ragged_eofs=False, server_side=True) params = pika.ConnectionParameters(ssl_options=ssl_options) #self.assertEqual(params.ssl_options, ssl_options) with mock.patch('pika.connection.Connection.connect'): conn = base_connection.BaseConnection(parameters=params) sock_mock = mock.Mock() conn._wrap_socket(sock_mock) load_certs_mock.assert_called_once_with( certfile='/some/cert/file.crt', keyfile='/some/key/file.crt', password='******') load_verify_mock.assert_called_once_with( cafile='/some/ca/file.crt', capath='/some/ca/path', cadata='/some/data/or/something') # the constructor of SSLContext calls set_ciphers as well set_ciphers_mock.assert_called_with('ciphers') wrap_socket_mock.assert_called_once_with( sock_mock, server_side=True, do_handshake_on_connect=False, suppress_ragged_eofs=False, server_hostname='some.virtual.host')
def test_ssl_wrap_socket_with_default_ssl_options_obj( self, wrap_socket_mock, set_ciphers_mock, load_verify_mock, load_certs_mock): ssl_options = pika.SSLOptions() params = pika.ConnectionParameters(ssl_options=ssl_options) #self.assertEqual(params.ssl_options, ssl_options) with mock.patch('pika.connection.Connection.connect'): conn = base_connection.BaseConnection(parameters=params) sock_mock = mock.Mock() conn._wrap_socket(sock_mock) load_certs_mock.assert_not_called() load_verify_mock.assert_not_called() # the __init__ of SSLContext calls set_ciphers, # hence the 'called once' set_ciphers_mock.assert_called_once() wrap_socket_mock.assert_called_once_with( sock_mock, server_side=False, do_handshake_on_connect=conn.DO_HANDSHAKE, suppress_ragged_eofs=True, server_hostname=None)
def test_connection_timeout(self, connect, settimeout): connect.side_effect = mock_timeout with self.assertRaises(exceptions.AMQPConnectionError): params = pika.ConnectionParameters(socket_timeout=2.0) base_connection.BaseConnection(params) settimeout.assert_called_with(2.0)
def setUp(self): with mock.patch('pika.connection.Connection.connect'): self.connection = base_connection.BaseConnection() self.connection._set_connection_state( base_connection.BaseConnection.CONNECTION_OPEN)