def _internal_user_from_tg_user( self, tg_user: Union[telepot.namedtuple.User, Dict]) -> User: if not isinstance(tg_user, telepot.namedtuple.User): tg_user = telepot.namedtuple.User(**tg_user) username = tg_user.username or ' '.join( [x for x in (tg_user.first_name, tg_user.last_name) if x]) return User(user_key=UserPK(platform=self.platform, user_id=str(tg_user.id)), username=username)
def test_add_messengers(self): tg_user = User(user_key=UserPK(platform=UserPK.PLATFORM_TELEGRAM, user_id="123")) fb_user = User(user_key=UserPK(platform=UserPK.PLATFORM_FACEBOOK, user_id="123")) self.assertEqual(self.gw._messenger_for_user(tg_user), self.messenger) self.assertEqual(self.gw._messenger_for_user(fb_user), self.messenger) tg_messenger = Mock(AbstractMessenger) p = PropertyMock(return_value=UserPK.PLATFORM_TELEGRAM) type(tg_messenger).platform = p tg_messenger.supports_platform = lambda x: x == UserPK.PLATFORM_TELEGRAM fb_messenger = Mock(AbstractMessenger) p = PropertyMock(return_value=UserPK.PLATFORM_FACEBOOK) type(fb_messenger).platform = p fb_messenger.supports_platform = lambda x: x == UserPK.PLATFORM_FACEBOOK self.gw.add_messengers(tg_messenger, fb_messenger) self.assertEqual(self.gw._messenger_for_user(tg_user), tg_messenger) self.assertEqual(self.gw._messenger_for_user(fb_user), fb_messenger)
async def test_on_human_initiated_dialog_exceptions(self): banned_user = User.objects(banned=True)[0] normal_user = User.objects(banned=False)[0] self.dm.human_bot_ratio = 0 with self.assertRaises(ValueError): await self.dm.on_human_initiated_dialog(banned_user) await self.dm.on_human_initiated_dialog(normal_user) with self.assertRaises(ValueError): await self.dm.on_human_initiated_dialog(normal_user) the_same_user = User.objects.get(user_key=normal_user.user_key) with self.assertRaises(ValueError): await self.dm.on_human_initiated_dialog(the_same_user) one_more_user = User.objects.get(user_key=UserPK(platform=normal_user.user_key.platform, user_id=normal_user.user_key.user_id)) with self.assertRaises(ValueError): await self.dm.on_human_initiated_dialog(one_more_user)
async def user(self) -> User: return await self.gw._update_user_record_in_db(User(user_key=UserPK(platform=UserPK.PLATFORM_TELEGRAM, user_id="123")))
def _internal_user_from_fb_user_id(self, fb_user_id: int) -> User: return User( user_key=UserPK(platform=self.platform, user_id=str(fb_user_id)))
def user(self): return User(user_key=UserPK(platform='Facebook', user_id='user_id'), username='******', banned=True)