def test__connect_mq(self, connection, channel, creds): """FSM connecting to AMQP sets its reply_queue attribute""" with mock.patch.dict('recore.fsm.recore.amqp.MQ_CONF', MQ_CONF): creds.return_value = mock.MagicMock(spec=pika.credentials.PlainCredentials, name="mocked creds") mocked_conn = mock.MagicMock(spec=pika.connection.Connection, name="mocked connection") mocked_channel = mock.MagicMock(spec=pika.channel.Channel, name="mocked channel") channel.return_value = mocked_channel channel.queue_declare.return_value.method.queue = temp_queue mocked_conn.channel.return_value = channel connection.return_value = mocked_conn f = FSM(TEST_PBID, state_id) (ch, conn) = f._connect_mq() self.assertEqual(f.reply_queue, temp_queue, msg="Expected %s for reply_queue, instead got %s" % (temp_queue, f.reply_queue))
def test__setup_amqp_connect_fails(self): """_setup raises exception if amqp connection can't be made""" f = FSM(state_id) f._connect_mq = mock.MagicMock(side_effect=pika.exceptions.AMQPError("Couldn't connect to AMQP")) with mock.patch('recore.mongo.database') as ( mongo.database): mongo.database = mock.MagicMock(pymongo.database.Database) mongo.database.__getitem__.return_value = mock.MagicMock(pymongo.collection.Collection) with mock.patch('recore.mongo.lookup_state') as ( mongo.lookup_state): # Found the state document in MongoDB mongo.lookup_state.return_value = _state with self.assertRaises(pika.exceptions.AMQPError): f._setup()
def test__setup(self): """Setup works with an existing state document""" f = FSM(state_id) # An AMQP connection hasn't been made yet f._connect_mq = mock.MagicMock(return_value=(mock.Mock(pika.channel.Channel), mock.Mock(pika.connection.Connection))) with mock.patch('recore.mongo.database') as ( mongo.database): mongo.database = mock.MagicMock(pymongo.database.Database) mongo.database.__getitem__.return_value = mock.MagicMock(pymongo.collection.Collection) with mock.patch('recore.mongo.lookup_state') as ( mongo.lookup_state): mongo.lookup_state.return_value = _state f._setup() assert f.project == _state['project']
def test__connect_mq(self, mq_conf, connection, channel, creds): """FSM connecting to AMQP sets its reply_queue attribute""" mq_conf = { 'NAME': 'user', 'PASSWORD': '******', 'SERVER': '127.0.0.1', 'EXCHANGE': 'foochange' } creds.return_value = mock.MagicMock(spec=pika.credentials.PlainCredentials, name="mocked creds") mocked_conn = mock.MagicMock(spec=pika.connection.Connection, name="mocked connection") mocked_channel = mock.MagicMock(spec=pika.channel.Channel, name="mocked channel") channel.return_value = mocked_channel channel.queue_declare.return_value.method.queue = temp_queue mocked_conn.channel.return_value = channel connection.return_value = mocked_conn f = FSM(state_id) (ch, conn) = f._connect_mq() self.assertEqual(f.reply_queue, temp_queue, msg="Expected %s for reply_queue, instead got %s" % (temp_queue, f.reply_queue))