async def test_on_platform_message_with_channel_mute(loop): with patch('worker.actions.start_session', Mock(side_effect=coroutine(lambda msg: "response"))): app = BaseApplication('app', loop=loop, CONFIG='config.tests') app.platforms = {"ubuntu-14.04-x64": 1} msg = ujson.dumps({ "platform": "ubuntu-14.04-x64", "vmmaster_session": 1 }) qc = AsyncQueueConsumer(app) # mocks channel = Mock(channel_id=1) qc.messages["platforms"]["ubuntu-14.04-x64"] = {} qc.channels[channel.channel_id] = {"mute": False, "type": "platforms", "channel": channel} channel.basic_client_ack = Mock(side_effect=coroutine( lambda delivery_tag: None )) qc.add_msg_to_queue = Mock(side_effect=coroutine( lambda _channel, correlation_id, queue_name, msg: None )) qc.start_consuming_for_session = Mock(side_effect=coroutine( lambda session_id: None )) qc.mute_channel = Mock(side_effect=coroutine( lambda _channel, _ct: None )) await qc.on_platform_message( channel, msg, Mock(delivery_tag='dtag1.2134234'), Mock(correlation_id='6ivtyubhnj') ) assert channel.basic_client_ack.called assert qc.add_msg_to_queue.called assert qc.start_consuming_for_session.called assert qc.mute_channel.called assert app.platforms["ubuntu-14.04-x64"] == 0
async def test_on_service_message_with_channel_unmuting(loop): with patch('worker.actions.make_service_command', Mock(side_effect=coroutine(lambda msg: "response"))): app = BaseApplication('app', loop=loop, CONFIG='config.tests') app.platforms = {"ubuntu-14.04-x64": 0} msg = ujson.dumps({ "command": "SESSION_CLOSING", "platform": "ubuntu-14.04-x64", "vmmaster_session": 1 }) qc = AsyncQueueConsumer(app) # mocks service_channel = Mock(channel_id=1) session_channel = Mock(channel_id=2) platforms_channel = Mock(channel_id=3) qc.get_session_channel_by_id = Mock(return_value=session_channel) qc.get_platform_channel_by_platform = Mock(return_value=platforms_channel) qc.messages["sessions"] = {1: {}} qc.channels[service_channel.channel_id] = \ {"mute": False, "type": "services", "channel": service_channel, "consumer_tag": "efwef1234r"} qc.channels[session_channel.channel_id] = \ {"mute": False, "type": "sessions", "channel": session_channel, "consumer_tag": "efwef1234r"} qc.channels[platforms_channel.channel_id] = \ {"mute": True, "type": "platforms", "channel": platforms_channel, "consumer_tag": "efwef1234r"} service_channel.basic_client_ack = Mock(side_effect=coroutine( lambda delivery_tag: None )) qc.delete_queue = Mock(side_effect=coroutine( lambda _channel, queue_name: None )) qc.mute_channel = Mock(side_effect=coroutine( lambda _channel, _ct: None )) qc.unmute_channel = Mock(side_effect=coroutine( lambda _channel, _ct, pl: None )) await qc.on_service_message( service_channel, msg, Mock(delivery_tag='dtag1.2134234'), Mock(correlation_id='6ivtyubhnj') ) assert service_channel.basic_client_ack.called assert qc.mute_channel.called assert qc.delete_queue.called assert app.platforms["ubuntu-14.04-x64"] == 1