Exemplo n.º 1
0
    def test_channel0_unblocked(self):
        channel = Channel0(self.connection)

        channel.on_frame(Connection.Blocked())

        self.assertTrue(channel.is_blocked)

        channel.on_frame(Connection.Unblocked())

        self.assertFalse(channel.is_blocked)
        self.assertEqual(self.get_last_log(),
                         'Connection is blocked by remote server: ')
Exemplo n.º 2
0
    def test_channel0_unblocked(self):
        connection = amqpstorm.Connection('localhost',
                                          'guest',
                                          'guest',
                                          lazy=True)
        channel = Channel0(connection)

        channel.on_frame(Connection.Blocked())

        self.assertTrue(channel.is_blocked)

        channel.on_frame(Connection.Unblocked())

        self.assertFalse(channel.is_blocked)
        self.assertEqual(self.logging_handler.messages['info'][0],
                         'Connection is no longer blocked by remote server')
Exemplo n.º 3
0
    def _send_open_connection(self):
        """Send Open Connection frame.

        :return:
        """
        open_frame = pamqp_connection.Open(
            virtual_host=self.parameters['virtual_host'])
        self._write_frame(open_frame)
Exemplo n.º 4
0
    def test_channel0_open_ok_frame(self):
        channel = Channel0(self.connection)

        self.assertFalse(self.connection.is_open)

        channel.on_frame(Connection.OpenOk())

        self.assertTrue(self.connection.is_open)
Exemplo n.º 5
0
    def test_channel0_send_tune_ok_negotiate(self):
        channel = Channel0(FakeConnection())
        channel._send_tune_ok(
            Connection.Tune(frame_max=MAX_FRAME_SIZE,
                            channel_max=MAX_CHANNELS))

        self.assertEqual(channel.max_frame_size, MAX_FRAME_SIZE)
        self.assertEqual(channel.max_allowed_channels, MAX_CHANNELS)
Exemplo n.º 6
0
    def test_channel0_on_close_ok_frame(self):
        self.connection.set_state(self.connection.OPEN)
        channel = Channel0(self.connection)

        self.assertFalse(self.connection.is_closed)

        channel.on_frame(Connection.CloseOk())

        self.assertTrue(self.connection.is_closed)
Exemplo n.º 7
0
    def test_channel0_tune_frame(self):
        connection = FakeConnection()
        connection.parameters['virtual_host'] = '/'
        channel = Channel0(connection)

        channel.on_frame(Connection.Tune())

        self.assertIsInstance(connection.get_last_frame(), Connection.TuneOk)
        self.assertIsInstance(connection.get_last_frame(), Connection.Open)
Exemplo n.º 8
0
 def test_channel0_invalid_authentication_mechanism(self):
     connection = amqpstorm.Connection('localhost',
                                       'guest',
                                       'guest',
                                       lazy=True)
     channel = Channel0(connection)
     channel._send_start_ok_frame(
         Connection.Start(mechanisms='CRAM-MD5 SCRAM-SHA-1 SCRAM-SHA-256'))
     self.assertRaises(AMQPConnectionError, connection.check_for_errors)
Exemplo n.º 9
0
    def _send_tune_ok_frame(self):
        """Send Tune OK frame.

        :return:
        """
        tune_ok_frame = pamqp_connection.TuneOk(channel_max=MAX_CHANNELS,
                                                frame_max=FRAME_MAX,
                                                heartbeat=self._heartbeat)
        self._write_frame(tune_ok_frame)
Exemplo n.º 10
0
    def test_channel0_send_tune_ok_negotiate_use_max(self):
        """Test to make sure that we use the highest acceptable value when
        the server returns zero.
        """
        channel = Channel0(FakeConnection())
        channel._send_tune_ok(Connection.Tune())

        self.assertEqual(channel.max_frame_size, MAX_FRAME_SIZE)
        self.assertEqual(channel.max_allowed_channels, MAX_CHANNELS)
Exemplo n.º 11
0
    def test_channel0_close_connection(self):
        connection = FakeConnection()
        connection.set_state(connection.OPEN)
        channel = Channel0(connection)

        self.assertTrue(connection.is_open)
        channel._close_connection(
            Connection.Close(reply_text=b'', reply_code=200))
        self.assertEqual(connection.exceptions, [])
        self.assertTrue(connection.is_closed)
Exemplo n.º 12
0
    def test_channel0_send_tune_ok_negotiate_use_server(self):
        """Test to make sure that we use the highest acceptable value from
        the servers perspective.
        """
        channel = Channel0(FakeConnection())
        channel._send_tune_ok(Connection.Tune(frame_max=16384,
                                              channel_max=200))

        self.assertEqual(channel.max_frame_size, 16384)
        self.assertEqual(channel.max_allowed_channels, 200)
Exemplo n.º 13
0
 def test_channel0_forcefully_closed_connection(self):
     connection = amqpstorm.Connection('localhost',
                                       'guest',
                                       'guest',
                                       lazy=True)
     connection.set_state(connection.OPEN)
     channel = Channel0(connection)
     channel._close_connection(
         Connection.Close(reply_text=b'', reply_code=500))
     self.assertTrue(connection.is_closed)
     self.assertRaises(AMQPConnectionError, connection.check_for_errors)
Exemplo n.º 14
0
    def test_channel0_open_ok_frame(self):
        connection = amqpstorm.Connection('localhost',
                                          'guest',
                                          'guest',
                                          lazy=True)
        channel = Channel0(connection)

        self.assertFalse(connection.is_open)

        channel.on_frame(Connection.OpenOk())

        self.assertTrue(connection.is_open)
Exemplo n.º 15
0
    def test_channel0_start_invalid_auth_frame(self):
        connection = FakeConnection()
        connection.parameters['username'] = '******'
        connection.parameters['password'] = '******'
        channel = Channel0(connection)

        channel.on_frame(Connection.Start(mechanisms='invalid'))

        self.assertRaisesRegexp(
            AMQPConnectionError,
            'Unsupported Security Mechanism\(s\): invalid',
            connection.check_for_errors
        )
Exemplo n.º 16
0
    def test_channel0_send_start_ok_frame(self):
        connection = FakeConnection()
        connection.parameters['username'] = '******'
        connection.parameters['password'] = '******'
        channel = Channel0(connection)
        channel._send_start_ok_frame(Connection.Start(mechanisms=b'PLAIN'))

        self.assertNotEqual(connection.frames_out, [])
        channel_id, frame_out = connection.frames_out.pop()
        self.assertEqual(channel_id, 0)
        self.assertIsInstance(frame_out, Connection.StartOk)
        self.assertNotEqual(frame_out.locale, '')
        self.assertIsNotNone(frame_out.locale)
Exemplo n.º 17
0
    def test_channel0_send_start_ok_external(self):
        connection = FakeConnection()
        channel = Channel0(connection)
        channel._send_start_ok(Connection.Start(mechanisms=b'EXTERNAL'))

        self.assertTrue(connection.frames_out)

        channel_id, frame_out = connection.frames_out.pop()

        self.assertEqual(channel_id, 0)
        self.assertIsInstance(frame_out, Connection.StartOk)
        self.assertNotEqual(frame_out.locale, '')
        self.assertIsNotNone(frame_out.locale)
Exemplo n.º 18
0
    def test_channel0_is_blocked(self):
        connection = amqpstorm.Connection('localhost',
                                          'guest',
                                          'guest',
                                          lazy=True)
        channel = Channel0(connection)

        self.assertFalse(channel.is_blocked)

        channel.on_frame(Connection.Blocked('unit-test'))

        self.assertTrue(channel.is_blocked)
        self.assertEqual(self.logging_handler.messages['warning'][0],
                         'Connection is blocked by remote server: unit-test')
Exemplo n.º 19
0
    def test_channel0_start_frame(self):
        connection = FakeConnection()
        connection.parameters['username'] = '******'
        connection.parameters['password'] = '******'
        channel = Channel0(connection)

        properties = {
            'version': 0
        }

        channel.on_frame(Connection.Start(server_properties=properties))

        self.assertEqual(channel.server_properties, properties)
        self.assertIsInstance(connection.get_last_frame(), Connection.StartOk)
Exemplo n.º 20
0
    def test_channel0_send_tune_ok(self):
        connection = FakeConnection()
        channel = Channel0(connection)
        channel._send_tune_ok(Connection.Tune())

        self.assertTrue(connection.frames_out)

        channel_id, frame_out = connection.frames_out.pop()

        self.assertEqual(channel_id, 0)
        self.assertIsInstance(frame_out, Connection.TuneOk)

        self.assertEqual(frame_out.channel_max, MAX_CHANNELS)
        self.assertEqual(frame_out.frame_max, MAX_FRAME_SIZE)
Exemplo n.º 21
0
    def test_channel0_on_close_frame(self):
        self.connection.set_state(self.connection.OPEN)
        channel = Channel0(self.connection)

        self.assertFalse(self.connection.exceptions)

        channel.on_frame(Connection.Close())

        self.assertTrue(self.connection.exceptions)
        self.assertTrue(self.connection.is_closed)
        self.assertRaisesRegexp(
            AMQPConnectionError,
            'Connection was closed by remote server: ',
            self.connection.check_for_errors
        )
Exemplo n.º 22
0
    def test_channel0_on_close_frame(self):
        connection = amqpstorm.Connection('localhost',
                                          'guest',
                                          'guest',
                                          lazy=True)
        connection.set_state(connection.OPEN)
        channel = Channel0(connection)

        self.assertFalse(connection.exceptions)

        channel.on_frame(Connection.Close())

        self.assertTrue(connection.exceptions)
        self.assertTrue(connection.is_closed)
        self.assertRaisesRegexp(AMQPConnectionError,
                                'Connection was closed by remote server: ',
                                connection.check_for_errors)
Exemplo n.º 23
0
    def _send_start_ok_frame(self, frame_in):
        """Send Start OK frame.

        :param pamqp_spec.Connection.StartOk frame_in: Amqp frame.
        :return:
        """
        if 'PLAIN' not in try_utf8_decode(frame_in.mechanisms):
            exception = AMQPConnectionError('Unsupported Security Mechanism(s)'
                                            ': %s' % frame_in.mechanisms)
            self._connection.exceptions.append(exception)
            return
        credentials = self._plain_credentials()
        start_ok_frame = pamqp_connection.StartOk(
            mechanism=AUTH_MECHANISM,
            client_properties=self._client_properties(),
            response=credentials,
            locale=LOCALE)
        self._write_frame(start_ok_frame)