Exemple #1
0
class TestMagic(unittest.TestCase):
    def setUp(self):
        class MockClient:
            def __init__(self):
                self.members = set(('0', ))

            async def get_members(self, channels):
                return self.members

            async def get_user_by_name(self, username):
                return User(username, username, None)

            async def get_user(self, id_):
                return User('0', 'LtWorf', None)

        self.mock_client = MockClient()
        settings = ClientSettings(
            False,
            True,
            Provider.SLACK,
            set(),
            Path('/tmp'),
        )
        self.client = Client(None, self.mock_client, settings)

    def test_no_replace(self):
        '''
        Check that no substitutions are done on regular strings and nickname in url
        '''
        cases = [
            'ciao',
            'http://LtWorf/',
            'ciao https://link.com/LtWorf',
            'ciao https://link.com/LtWorf?param',
        ]
        dest = Channel('0', '0', None, None)
        for i in cases:
            assert asyncio.run(self.client._addmagic(i, dest)) == i

    def test_escapes(self):
        dest = User('0', 'LtWorf', None)
        assert asyncio.run(self.client._addmagic('<', dest)) == '&lt;'
        assert asyncio.run(self.client._addmagic('>ciao', dest)) == '&gt;ciao'

    def test_annoyiances(self):
        dest = User('0', 'LtWorf', None)
        asyncio.run(self.client._addmagic('ciao @here',
                                          dest)) == 'ciao <!here>'
        asyncio.run(self.client._addmagic('ciao @channel',
                                          dest)) == 'ciao <!channel>'
        asyncio.run(self.client._addmagic('ciao @everyone </',
                                          dest)) == 'ciao <!everyone> &lt;/'

    def test_mentions(self):
        dest = Channel('0', '0', None, None)
        assert asyncio.run(self.client._addmagic('ciao LtWorf',
                                                 dest)) == 'ciao <@LtWorf>'
        assert asyncio.run(self.client._addmagic('LtWorf: ciao',
                                                 dest)) == '<@LtWorf>: ciao'
        assert asyncio.run(self.client._addmagic(
            'LtWorf: ciao LtWorf', dest)) == '<@LtWorf>: ciao <@LtWorf>'
        assert asyncio.run(self.client._addmagic('_LtWorf', dest)) == '_LtWorf'
        assert asyncio.run(
            self.client._addmagic(
                'LtWorf: http://link/user=LtWorf',
                dest)) == '<@LtWorf>: http://link/user=LtWorf'