def on_delete(self, activity: Activity) -> (bool, int, str): user_id = activity.actor.id room_id = activity.target.id message_id = activity.object.id if message_id is None or len(message_id.strip()) == 0: return False, ECodes.MISSING_OBJECT_ID, 'no object ID when deleting message' sender_can_delete = environ.env.config.get( ConfigKeys.SENDER_CAN_DELETE, False) if sender_can_delete and utils.get_sender_for_message( message_id) == user_id: return True, None, None if not utils.user_is_allowed_to_delete_message(room_id, user_id): return False, ECodes.NOT_ALLOWED, 'not allowed to remove message in room %s' % room_id return True, None, None
def test_user_is_not_allowed_to_delete_message(self): self.assertFalse(utils.user_is_allowed_to_delete_message(BaseWithDb.ROOM_ID, BaseWithDb.USER_ID))
def test_super_user_is_allowed_to_delete_message(self): self.set_super_user() self.assertTrue(utils.user_is_allowed_to_delete_message(BaseWithDb.ROOM_ID, BaseWithDb.USER_ID))
def test_admin_is_allowed_to_delete_message(self): self.set_channel_admin() self.assertTrue(utils.user_is_allowed_to_delete_message(BaseWithDb.ROOM_ID, BaseWithDb.USER_ID))