예제 #1
0
    def setUp(self):
        patcher = patch('os.path.isfile')
        self.addCleanup(patcher.stop)
        self.mock_isfile = patcher.start()
        self.mock_isfile.return_value = True

        patcher = patch('os.path.isdir')
        self.addCleanup(patcher.stop)
        self.mock_isdir = patcher.start()
        self.mock_isdir.return_value = False

        patcher = patch('os.mkdir')
        self.addCleanup(patcher.stop)
        self.mock_mkdir = patcher.start()

        patcher = patch('aiofiles.open')
        self.addCleanup(patcher.stop)
        self.mock_open = patcher.start()

        self.file_mock = MagicMock()
        self.file_mock.__aenter__ = CoroutineMock()
        self.file_mock.__aenter__.return_value = self.file_mock
        self.file_mock.__aexit__ = CoroutineMock()
        self.file_mock.__aexit__.return_value = False
        self.file_mock.read = CoroutineMock()
        self.file_mock.read.return_value = config_data
        self.mock_open.return_value = self.file_mock
async def test_handle_message():
    player = PlayerNetworkChild(
        player_configuration=player_configuration,
        avatar=12,
        server_configuration=server_configuration,
        start_listening=False,
    )
    player._log_in = CoroutineMock()

    await player._handle_message("|challstr")
    player._log_in.assert_called_once()

    assert player.logged_in.is_set() is False
    await player._handle_message("|updateuser| username")
    assert player._logged_in.is_set() is True

    player._update_challenges = CoroutineMock()
    await player._handle_message("|updatechallenges")
    player._update_challenges.assert_called_once_with(["", "updatechallenges"])

    player._handle_battle_message = CoroutineMock()
    await player._handle_message(">battle|thing")
    player._handle_battle_message.assert_called_once_with([[">battle", "thing"]])

    await player._handle_message("|updatesearch")

    player._logger.warning = CoroutineMock()
    await player._handle_message("that was unexpected!|")
    player._logger.warning.assert_called_once_with(
        "Unhandled message: %s", "that was unexpected!|"
    )
예제 #3
0
 async def setUp(self):
     self.one_route_fixture = {
         "routes": ["/asgard/counts/ok"],
         "handler": _handler,
         "options": {
             "vhost": "/",
             "bulk_size": 1,
             "bulk_flush_interval": 60,
         },
     }
     self.consumer_params = (
         "http://localhost:8080/v2/events",
         "guest",
         "guest",
     )
     self.consumer = SSEConsumer(self.one_route_fixture,
                                 *self.consumer_params)
     self.consumer.interval = 0
     self.logger_patcher = asynctest.mock.patch.object(
         conf,
         "logger",
         CoroutineMock(
             info=CoroutineMock(),
             debug=CoroutineMock(),
             error=CoroutineMock(),
         ),
     )
async def test_handle_message():
    player = PlayerNetworkChild(
        player_configuration=player_configuration,
        avatar=12,
        server_configuration=server_configuration,
        start_listening=False,
    )
    player._log_in = CoroutineMock()

    await player._handle_message("|challstr")
    player._log_in.assert_called_once()

    assert player.logged_in.is_set() is False
    await player._handle_message("|updateuser| username")
    assert player._logged_in.is_set() is True

    player._update_challenges = CoroutineMock()
    await player._handle_message("|updatechallenges")
    player._update_challenges.assert_called_once_with(["", "updatechallenges"])

    player._handle_battle_message = CoroutineMock()
    await player._handle_message(">battle|thing")
    player._handle_battle_message.assert_called_once_with([[">battle", "thing"]])

    await player._handle_message("|updatesearch")

    with pytest.raises(ShowdownException):
        await player._handle_message("|nametaken")

    player._logger.critical = CoroutineMock()
    with pytest.raises(NotImplementedError):
        await player._handle_message("that was unexpected!|")
    player._logger.critical.assert_called_once_with(
        "Unhandled message: %s", "that was unexpected!|"
    )
예제 #5
0
async def _stream() -> WSStream:
    stream = WSStream(Config(), False, None, None, CoroutineMock(),
                      CoroutineMock(), 1)
    stream.spawn_app.return_value = CoroutineMock()
    stream.app_put = CoroutineMock()
    stream.config._log = AsyncMock(spec=Logger)
    return stream
 async def test_process_message_to_be_acked(self):
     expected_body = {"key": "value"}
     message = RabbitMQMessage(body=expected_body, delivery_tag=42)
     queue_mock = CoroutineMock(ack=CoroutineMock(), reject=CoroutineMock())
     await message.process(queue_mock)
     queue_mock.ack.assert_awaited_once_with(delivery_tag=42)
     self.assertEqual(0, queue_mock.reject.await_count)
예제 #7
0
 async def test_match_partner__first_partner_has_blocked_the_bot(self):
     stranger_mock = CoroutineMock()
     partner = CoroutineMock()
     partner.id = 31416
     self.stranger_service._match_partner = Mock(return_value=partner)
     self.stranger_service._locked_strangers_ids = Mock()
     self.stranger_service.get_stranger_by_id = Mock(
         return_value=stranger_mock)
     partner.notify_partner_found.side_effect = [StrangerError(), None]
     stranger_id = 271828
     await self.stranger_service.match_partner(stranger_id)
     self.assertEqual(
         self.stranger_service._locked_strangers_ids.discard.call_args_list,
         [
             call(partner.id),
             call(partner.id),
         ],
     )
     self.assertEqual(
         partner.notify_partner_found.call_args_list,
         [
             call(stranger_id),
             call(stranger_id),
         ],
     )
     stranger_mock.notify_partner_found.assert_called_once_with(partner.id)
예제 #8
0
 async def test_chatCommand(self, mock_commands, mock_data, mock_log):
     command1 = CoroutineMock(spec=lambda args: False, return_value=False)
     command2 = CoroutineMock(spec=lambda args: False, return_value=True)
     command3 = CoroutineMock(spec=lambda args: False, return_value=False)
     mock_commands.return_value = [command1, command2, command3]
     data = MagicMock(spec=CacheStore)
     data.__aenter__.return_value = data
     data.__aexit__.return_value = True
     data.isPermittedUser.return_value = False
     data.isBotManager.return_value = False
     mock_data.return_value = data
     message = Mock(spec=Message)
     type(message).command = PropertyMock(return_value='Kappa')
     await channel.chatCommand(self.channel, self.tags, 'botgotsthis',
                               message, self.now)
     data.twitch_save_id.assert_has_calls(
         [call('2', 'megotsthis'),
          call('1', 'botgotsthis')])
     self.assertEqual(data.isPermittedUser.call_count, 1)
     self.assertEqual(data.isBotManager.call_count, 1)
     self.assertEqual(mock_commands.call_count, 1)
     self.assertEqual(command1.call_count, 1)
     self.assertEqual(command2.call_count, 1)
     self.assertEqual(command3.call_count, 0)
     self.assertEqual(mock_log.call_count, 0)
예제 #9
0
async def _protocol(monkeypatch: MonkeyPatch) -> H11Protocol:
    MockHTTPStream = AsyncMock()  # noqa: N806
    MockHTTPStream.return_value = AsyncMock(spec=HTTPStream)
    monkeypatch.setattr(hypercorn.protocol.h11, "HTTPStream", MockHTTPStream)
    MockEvent = AsyncMock()  # noqa: N806
    MockEvent.return_value = AsyncMock(spec=IOEvent)
    return H11Protocol(Config(), False, None, None, CoroutineMock(), CoroutineMock(), MockEvent)
예제 #10
0
 async def test_calls_get_alternate_accounts(self):
     backend = CoroutineMock(get_alternate_accounts=CoroutineMock())
     user = CoroutineMock()
     current_account = CoroutineMock()
     await UsersService.get_alternate_accounts(user, current_account,
                                               backend)
     backend.get_alternate_accounts.assert_awaited_with(
         user, current_account)
예제 #11
0
    async def test_call_on_connect_callback(self):
        session_mock = CoroutineMock(get=CoroutineMock())
        self.consumer.session = session_mock

        with asynctest.patch.object(self.consumer, 'keep_runnig', side_effect=self.total_loops(1)), \
                asynctest.patch.object(self.consumer, "on_connection", side_effect=CoroutineMock()) as on_connection_mock:
            await self.consumer.start()
            self.assertEqual(1, on_connection_mock.call_count)
            self.assertEqual(1, on_connection_mock.await_count)
예제 #12
0
    async def test_it_doesnt_calls_connect_if_queue_is_connected(self):
        async_queue = Mock(
            connection=Mock(is_connected=True, _connect=CoroutineMock()))
        coro = CoroutineMock()
        wrapped = _ensure_connected(coro)
        await wrapped(async_queue, 1, dog="Xablau")

        async_queue.connection._connect.assert_not_awaited()
        coro.assert_awaited_once_with(async_queue, 1, dog="Xablau")
예제 #13
0
 async def wrapper(*args, **kwargs):
     with patch("kutana.storages.mongodb.AsyncIOMotorClient") as client:
         collection = Mock()
         collection.update_one = CoroutineMock()
         collection.create_index = CoroutineMock()
         collection.find_one = CoroutineMock()
         collection.delete_one = CoroutineMock()
         client.return_value = {"kutana": {"storage": collection}}
         return await coro(*args, storage=MongoDBStorage("mongo"), **kwargs)
예제 #14
0
        class Foo(AsyncQueueConsumerDelegate):
            loop = self.loop
            queue_name = q_name
            queue = self.queue

            on_connection_error = CoroutineMock()
            on_message_handle_error = CoroutineMock()
            on_queue_error = CoroutineMock()
            on_queue_message = CoroutineMock()
            on_consumer_start = CoroutineMock()
예제 #15
0
 async def test_starting_the_consumer_calls_on_consumer_starts_on_delegate_class(
         self):
     consumer = Mock(queue=self.queue, on_consumption_start=CoroutineMock())
     self.queue.delegate = consumer
     consumer_tag = 'Xablau'
     with patch.object(self.queue, 'consume',
                       CoroutineMock(return_value=consumer_tag)):
         await consumer.queue.start_consumer()
         consumer.on_consumption_start.assert_awaited_once_with(
             consumer_tag, queue=self.queue)
async def test_came_in_1():
    store = Mock(EventReaderWriter)
    store.push_event = CoroutineMock()
    turnstile = TurnstileService(store)
    turnstile._check_deadline = CoroutineMock(return_value=False)

    assert not await turnstile.came_in('42')
    turnstile._check_deadline.assert_awaited_once()
    assert turnstile._check_deadline.await_args[0][0] == '42'
    store.push_event.assert_not_awaited()
예제 #17
0
    async def test_consume_again_if_reconnected(self):
        session_mock = CoroutineMock(get=CoroutineMock(
            side_effect=["", aiohttp.ClientError(), ""]))
        self.consumer.session = session_mock

        with asynctest.patch.object(self.consumer, 'keep_runnig', side_effect=[True, True, True, False]), \
                asynctest.patch.object(self.consumer, "_consume_events", side_effect=CoroutineMock()) as consume_events_mock:
            await self.consumer.start()
            self.assertEqual(2, consume_events_mock.await_count)
            self.assertEqual(3, session_mock.get.call_count)
            self.assertEqual(2, session_mock.get.await_count)
예제 #18
0
    def test_differential(self, app, community):
        community.get_ud_block = CoroutineMock(
            return_value={'membersCount': 5})
        community.monetary_mass = CoroutineMock(return_value=500)
        referential = QuantitativeZSum(110, community, app, None)

        async def exec_test():
            value = await referential.value()
            self.assertEqual(value, 10)

        self.lp.run_until_complete(exec_test())
 async def test_process_log(self, mockopen):
     file_mock = MagicMock()
     file_mock.__aenter__ = CoroutineMock()
     file_mock.__aenter__.return_value = file_mock
     file_mock.__aexit__ = CoroutineMock()
     file_mock.__aexit__.return_value = True
     mockopen.return_value = file_mock
     bot.coroutine.logging._queue = deque([('log', 'Kappa')])
     await bot.coroutine.logging._process_log()
     self.assertTrue(mockopen.called)
     self.assertTrue(file_mock.write.called)
예제 #20
0
    async def test_reconect_if_unhandled_reconnected(self):
        session_mock = CoroutineMock(get=CoroutineMock(
            side_effect=["", Exception()]))
        self.consumer.session = session_mock

        with asynctest.patch.object(self.consumer, 'keep_runnig', side_effect=[True, True, False]), \
                asynctest.patch.object(self.consumer, "_consume_events", side_effect=CoroutineMock()) as consume_events_mock:
            await self.consumer.start()
            self.assertEqual(1, consume_events_mock.await_count)
            self.assertEqual(2, session_mock.get.call_count)
            self.assertEqual(1, session_mock.get.await_count)
예제 #21
0
async def test_client_write_small_message():
    writer = CoroutineMock()
    writer.drain = CoroutineMock()
    connection = PlayerConnection(reader=None, writer=writer)
    await connection.write({'test': 'test'})

    assert writer.method_calls == [
        call.write(b'{"test": "test"}'),
        call.write(b'\n'),
        call.drain(),
    ]
 def setUp(self):
     from randtalkbot.stranger_sender import get_translation
     self.bot = CoroutineMock()
     self.stranger = Mock()
     self.stranger.telegram_id = 31416
     self.stranger.get_languages.return_value = 'foo_languages'
     self.sender = StrangerSender(self.bot, self.stranger)
     self.sender.sendMessage = CoroutineMock()
     self.get_translation = get_translation
     self.translation = self.get_translation.return_value
     self.translation.reset_mock()
 async def test_handle_command_begin(self):
     from randtalkbot.stranger_handler import datetime as datetime_mock
     from randtalkbot.stranger_handler import StrangerService
     datetime_mock.datetime.utcnow.return_value = datetime.datetime(1970, 1, 1)
     partner = CoroutineMock()
     partner.looking_for_partner_from = datetime.datetime(1970, 1, 1)
     stranger_service = StrangerService.get_instance.return_value
     stranger_service.match_partner = CoroutineMock(return_value=partner)
     message = Mock()
     await self.stranger_handler._handle_command_begin(message)
     self.stranger.prevent_advertising.assert_called_once_with()
     stranger_service.match_partner.assert_called_once_with(self.stranger)
    async def test_process_message_to_be_rejected(self):
        """
        Sempre fazemos reject com requeue.
        """
        expected_body = {"key": "value"}
        message = RabbitMQMessage(body=expected_body, delivery_tag=42)
        message.reject()

        queue_mock = CoroutineMock(ack=CoroutineMock(), reject=CoroutineMock())
        await message.process(queue_mock)
        queue_mock.reject.assert_awaited_once_with(delivery_tag=42, requeue=True)
        self.assertEqual(0, queue_mock.ack.await_count)
예제 #25
0
    def test_localized_no_si(self, app, community):
        type(community).short_currency = PropertyMock(return_value="TC")
        community.get_ud_block = CoroutineMock(
            return_value={'membersCount': 5})
        community.monetary_mass = CoroutineMock(return_value=500)
        referential = QuantitativeZSum(110, community, app, None)

        async def exec_test():
            value = await referential.localized(units=True)
            self.assertEqual(value, "10 Q0 TC")

        self.lp.run_until_complete(exec_test())
예제 #26
0
    def test_differential(self, app, community):
        community.dividend = CoroutineMock(return_value=100)
        community.get_ud_block = CoroutineMock(side_effect=lambda *args, **kwargs: \
                                                            {'membersCount': 5, "monetaryMass": 500, "dividend": 100} if 'x' in kwargs \
                                                            else {'membersCount': 5, "monetaryMass": 1050, "dividend": 100} )
        referential = RelativeZSum(110, community, app, None)

        async def exec_test():
            value = await referential.value()
            self.assertAlmostEqual(value, 0.10)

        self.lp.run_until_complete(exec_test())
예제 #27
0
    async def test_call_on_connection_error(self):
        """
        Call on_connection_error when an aiohttp.ClientError is raised
        """
        session_mock = CoroutineMock(get=CoroutineMock(
            side_effect=[aiohttp.ClientError()]))
        self.consumer.session = session_mock

        with asynctest.patch.object(self.consumer, 'keep_runnig', side_effect=self.total_loops(1)), \
                asynctest.patch.object(self.consumer, "on_connection_error", side_effect=CoroutineMock()) as on_connection_error_mock:
            await self.consumer.start()
            self.assertEqual(1, on_connection_error_mock.await_count)
예제 #28
0
 async def test_match_partner__ok(self):
     stranger_mock = CoroutineMock()
     partner = CoroutineMock()
     partner.id = 31416
     self.stranger_service._match_partner = Mock(return_value=partner)
     self.stranger_service._locked_strangers_ids = Mock()
     await self.stranger_service.match_partner(stranger_mock)
     self.stranger_service._locked_strangers_ids.discard. \
         assert_called_once_with(31416)
     stranger_mock.notify_partner_found.assert_called_once_with(partner)
     partner.notify_partner_found.assert_called_once_with(stranger_mock)
     stranger_mock.set_partner.assert_called_once_with(partner)
예제 #29
0
 async def test_match_partner__stranger_error(self):
     stranger_mock = CoroutineMock()
     partner = CoroutineMock()
     partner.id = 31416
     self.stranger_service._match_partner = Mock(return_value=partner)
     self.stranger_service._locked_strangers_ids = Mock()
     stranger_mock.notify_partner_found.side_effect = StrangerError()
     with self.assertRaises(StrangerServiceError):
         await self.stranger_service.match_partner(stranger_mock)
     self.stranger_service._locked_strangers_ids.discard. \
         assert_called_once_with(31416)
     stranger_mock.set_partner.assert_not_called()
async def test_came_in_2():
    store = Mock(EventReaderWriter)
    store.push_event = CoroutineMock()
    turnstile = TurnstileService(store)
    turnstile._check_deadline = CoroutineMock(return_value=True)

    assert await turnstile.came_in('42')
    turnstile._check_deadline.assert_awaited_once()
    assert turnstile._check_deadline.await_args[0][0] == '42'
    store.push_event.assert_awaited_once()
    event = store.push_event.await_args[0][0]
    assert event.type == TurnstileEventType.CameIn
    assert event.object_name == '42'