Exemplo n.º 1
0
 def test_init__message_with_reply(self, telepot):
     telepot.glance.return_value = 'text', 'private', 31416
     self.message_json['text'] = 'foo'
     message = Message(self.message_json)
     self.assertFalse(message.is_reply)
     self.message_json['reply_to_message'] = None
     message = Message(self.message_json)
     self.assertTrue(message.is_reply)
 async def test_on_chat_message__command_setup(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     telepot.glance.return_value = 'text', 'private', 31416
     message_json = {
         'text': 'some_command_text'
         }
     message = Mock()
     message.command = 'foo_command'
     Message.return_value = message
     self.stranger_setup_wizard.handle_command.return_value = True
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_not_called()
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
 async def test_on_chat_message__command_setup(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     telepot.glance.return_value = 'text', 'private', 31416
     message_json = {
         'text': 'some_command_text'
         }
     message = Mock()
     message.command = 'foo_command'
     Message.return_value = message
     self.stranger_setup_wizard.handle_command.return_value = True
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_not_called()
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
 async def test_on_chat_message__text(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     telepot.glance.return_value = 'text', 'private', 31416
     self.stranger_setup_wizard.handle.return_value = False
     message_json = {
         'text': 'message_text'
         }
     message = Message.return_value
     message.command = None
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_called_once_with(Message.return_value)
     self.stranger_setup_wizard.handle.assert_called_once_with(message)
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
 async def test_on_chat_message__text(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     telepot.glance.return_value = 'text', 'private', 31416
     self.stranger_setup_wizard.handle.return_value = False
     message_json = {
         'text': 'message_text'
         }
     message = Message.return_value
     message.command = None
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_called_once_with(Message.return_value)
     self.stranger_setup_wizard.handle.assert_called_once_with(message)
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
Exemplo n.º 6
0
 def test_decode_command_args__ok(self):
     message = Mock()
     message.command_args = 'eyJmb28iOiAiYmFyIn0='
     self.assertEqual(
         Message.decode_command_args(message),
         {"foo": "bar"},
         )
 async def test_on_chat_message__setup(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     telepot.glance.return_value = 'text', 'private', 31416
     # This means, message was handled by StrangerSetupWizard.
     self.stranger_setup_wizard.handle.return_value = True
     message_json = {
         'text': 'message_text',
         }
     message = Message.return_value
     message.command = None
     self.stranger_setup_wizard.handle.return_value = True
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger_setup_wizard.handle.assert_called_once_with(message)
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
Exemplo n.º 8
0
 def test_decode_command_args__ok(self):
     message = Mock()
     message.command_args = 'eyJmb28iOiAiYmFyIn0='
     self.assertEqual(
         Message.decode_command_args(message),
         {"foo": "bar"},
     )
Exemplo n.º 9
0
 def test_init__sticker(self):
     self.message_json['sticker'] = self.sticker
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {'sticker': 'BQADAgAD7gAD9HsZAAFCdfFWtd5o1gI'},
     )
Exemplo n.º 10
0
 def test_init__invalid_location(self, telepot):
     self.message_json['location'] = {
         'latitude': 'foo',
     }
     telepot.glance.return_value = 'location', 'private', 31416
     with self.assertRaises(UnsupportedContentError):
         Message(self.message_json)
Exemplo n.º 11
0
 async def test_on_chat_message__setup(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     telepot.glance.return_value = 'text', 'private', 31416
     # This means, message was handled by StrangerSetupWizard.
     self.stranger_setup_wizard.handle.return_value = True
     message_json = {
         'text': 'message_text',
         }
     message = Message.return_value
     message.command = None
     self.stranger_setup_wizard.handle.return_value = True
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger_setup_wizard.handle.assert_called_once_with(message)
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
Exemplo n.º 12
0
 def test_init__text(self):
     self.message_json['text'] = 'foo'
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {'text': 'foo'},
     )
     self.assertEqual(message.text, 'foo')
Exemplo n.º 13
0
 async def test_on_chat_message__not_supported_by_message_cls_content(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     from randtalkbot.stranger_handler import StrangerError
     telepot.glance.return_value = 'unsupported_content', 'private', 31416
     message_json = Mock()
     message = Message.return_value
     message.command = None
     self.stranger.send_to_partner = CoroutineMock()
     self.stranger_setup_wizard.handle.return_value = False
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_not_called()
     self.sender.send_notification.assert_called_once_with(
         'Messages of this type aren\'t supported.',
         )
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
Exemplo n.º 14
0
 async def test_on_chat_message__text_no_partner(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     from randtalkbot.errors import MissingPartnerError
     telepot.glance.return_value = 'text', 'private', 31416
     self.stranger_setup_wizard.handle.return_value = False
     message_json = {
         'text': 'message_text',
         }
     self.stranger.send_to_partner = CoroutineMock(side_effect=MissingPartnerError())
     message = Message.return_value
     message.command = None
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_called_once_with(message)
     self.stranger_setup_wizard.handle.assert_called_once_with(message)
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
 async def test_on_chat_message__text_no_partner(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     from randtalkbot.errors import MissingPartnerError
     telepot.glance.return_value = 'text', 'private', 31416
     self.stranger_setup_wizard.handle.return_value = False
     message_json = {
         'text': 'message_text',
         }
     self.stranger.send_to_partner = CoroutineMock(side_effect=MissingPartnerError())
     message = Message.return_value
     message.command = None
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_called_once_with(message)
     self.stranger_setup_wizard.handle.assert_called_once_with(message)
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
 async def test_on_chat_message__not_supported_by_message_cls_content(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     from randtalkbot.stranger_handler import StrangerError
     telepot.glance.return_value = 'unsupported_content', 'private', 31416
     message_json = Mock()
     message = Message.return_value
     message.command = None
     self.stranger.send_to_partner = CoroutineMock()
     self.stranger_setup_wizard.handle.return_value = False
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_not_called()
     self.sender.send_notification.assert_called_once_with(
         'Messages of this type aren\'t supported.',
         )
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
 async def test_on_chat_message__text_stranger_error(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     from randtalkbot.stranger_handler import StrangerError
     telepot.glance.return_value = 'text', 'private', 31416
     self.stranger_setup_wizard.handle.return_value = False
     message_json = {
         'text': 'message_text',
         }
     Message.return_value.command = None
     self.stranger.send_to_partner = CoroutineMock(side_effect=StrangerError())
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_called_once_with(Message.return_value)
     self.sender.send_notification.assert_called_once_with(
         'Messages of this type aren\'t supported.',
         )
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
Exemplo n.º 18
0
 async def test_on_chat_message__text_stranger_error(self, handle_command_mock):
     from randtalkbot.stranger_handler import Message
     from randtalkbot.stranger_handler import telepot
     from randtalkbot.stranger_handler import StrangerError
     telepot.glance.return_value = 'text', 'private', 31416
     self.stranger_setup_wizard.handle.return_value = False
     message_json = {
         'text': 'message_text',
         }
     Message.return_value.command = None
     self.stranger.send_to_partner = CoroutineMock(side_effect=StrangerError())
     await self.stranger_handler.on_chat_message(message_json)
     self.stranger.send_to_partner.assert_called_once_with(Message.return_value)
     self.sender.send_notification.assert_called_once_with(
         'Messages of this type aren\'t supported.',
         )
     Message.assert_called_once_with(message_json)
     handle_command_mock.assert_not_called()
Exemplo n.º 19
0
 def test_init__document(self):
     self.message_json['document'] = {
         'file_id': 'foo',
     }
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'document': 'foo',
         },
     )
Exemplo n.º 20
0
 def test_init__voice(self):
     self.message_json['voice'] = {
         'file_id': 'foo',
     }
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'voice': 'foo',
             'duration': None,
         },
     )
Exemplo n.º 21
0
 def test_init__location(self):
     self.message_json['location'] = {
         'latitude': 'foo',
         'longitude': 'bar',
     }
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'latitude': 'foo',
             'longitude': 'bar',
         },
     )
Exemplo n.º 22
0
 def test_init__audio(self):
     self.message_json['audio'] = {
         'file_id': 'foo',
     }
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'audio': 'foo',
             'duration': None,
             'performer': None,
             'title': None,
         },
     )
Exemplo n.º 23
0
 def test_init__photo_with_caption(self):
     self.message_json['photo'] = [
         {'file_id': 'foo'},
         {'file_id': 'bar'},
         ]
     self.message_json['caption'] = 'baz'
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'caption': 'baz',
             'photo': 'foo',
             },
         )
Exemplo n.º 24
0
 def test_init__photo(self):
     self.message_json['photo'] = [
         {'file_id': 'foo'},
         {'file_id': 'bar'},
         ]
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'caption': None,
             'photo': 'foo',
             },
         )
     self.assertEqual(message.text, None)
Exemplo n.º 25
0
 def test_init__video_with_info(self):
     self.message_json['video'] = {
         'duration': 85,
         'file_id': 'foo',
     }
     self.message_json['caption'] = 'Pink Floyd'
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'video': 'foo',
             'duration': 85,
             'caption': 'Pink Floyd',
         },
     )
Exemplo n.º 26
0
 def test_init__audio_with_info(self):
     self.message_json['audio'] = {
         'duration': 85,
         'file_id': 'foo',
         'performer': 'Pink Floyd',
         'title': 'Another Brick In The Wall Part 3',
     }
     message = Message(self.message_json)
     self.assertEqual(
         message.sending_kwargs,
         {
             'audio': 'foo',
             'duration': 85,
             'performer': 'Pink Floyd',
             'title': 'Another Brick In The Wall Part 3',
         },
     )
Exemplo n.º 27
0
 def test_init__text_without_command_has_empty_comand_field(self, telepot):
     telepot.glance.return_value = 'text', 'private', 31416
     self.message_json['text'] = 'foo'
     message = Message(self.message_json)
     self.assertEqual(message.command, None)
     self.assertEqual(message.command_args, None)
Exemplo n.º 28
0
 def test_init__invalid_voice(self, telepot):
     telepot.glance.return_value = 'voice', 'private', 31416
     with self.assertRaises(UnsupportedContentError):
         Message(self.message_json)
Exemplo n.º 29
0
 def test_init__message_with_forward(self, telepot):
     telepot.glance.return_value = 'text', 'private', 31416
     self.message_json['forward_from'] = None
     with self.assertRaises(UnsupportedContentError):
         Message(self.message_json)
Exemplo n.º 30
0
 def test_init__invalid_json(self):
     with self.assertRaises(UnsupportedContentError):
         Message(self.message_json)
Exemplo n.º 31
0
 def test_init__unknown_content_type(self, telepot):
     telepot.glance.return_value = 'foo_content_type', 'private', 31416
     with self.assertRaises(UnsupportedContentError):
         Message(self.message_json)
Exemplo n.º 32
0
 def test_decode_command_args__b64decode_type_error(self):
     message = Mock()
     message.command_args = None
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 33
0
 def test_decode_command_args__b64decode_incorrect_padding(self):
     message = Mock()
     message.command_args = 'NoonfowfVyZSwg'
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 34
0
 def test_decode_command_args__b64decode_value_error(self):
     message = Mock()
     message.command_args = 'кириллица'
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 35
0
 def test_decode_command_args__unicode_decode_error(self):
     message = Mock()
     message.command_args = '_w=='  # b'\xff'
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 36
0
 def test_decode_command_args__loading_json_error(self):
     message = Mock()
     message.command_args = 'Ww==' # b'['
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 37
0
 def test_decode_command_args__unicode_decode_error(self):
     message = Mock()
     message.command_args = '_w==' # b'\xff'
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 38
0
 def test_decode_command_args__b64decode_value_error(self):
     message = Mock()
     message.command_args = 'кириллица'
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 39
0
 def test_decode_command_args__b64decode_incorrect_padding(self):
     message = Mock()
     message.command_args = 'NoonfowfVyZSwg'
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 40
0
 def test_init__command_with_underscore(self, telepot):
     telepot.glance.return_value = 'text', 'private', 31416
     self.message_json['text'] = '/begin_chat here'
     message = Message(self.message_json)
     self.assertEqual(message.command, 'begin_chat')
     self.assertEqual(message.command_args, 'here')
Exemplo n.º 41
0
 def test_decode_command_args__loading_json_error(self):
     message = Mock()
     message.command_args = 'Ww=='  # b'['
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)
Exemplo n.º 42
0
 def test_decode_command_args__b64decode_type_error(self):
     message = Mock()
     message.command_args = None
     with self.assertRaises(UnsupportedContentError):
         Message.decode_command_args(message)