Beispiel #1
0
    async def test_slackmarkup(self):
        s = slack.Slack(None, name='test')
        m = slack.SlackMessage(s, {'type': 'message', 'channel': 'foo'})

        Ø = frozenset()

        self.assertEqual([(Ø, '')], m.slackmarkup(None, Ø))
        self.assertEqual([(Ø, '<&>')], m.slackmarkup('&lt;&amp;&gt;', Ø))
        self.assertEqual(
            [
                (Ø, ''),
                ({'bold'}, 'foo'),
                (Ø, '')
            ], m.slackmarkup('<|foo>', Ø))

        await s.incoming({
            'type': 'team_join',
            'user': {'id': 'USER', 'name': 'user'},
            })

        self.assertEqual(
            [
                (Ø, ''),
                ({'bold'}, '@user'),
                (Ø, '')
            ], m.slackmarkup('<@USER>', Ø))

        self.assertEqual(
            [
                (Ø, ''),
                ({'bold'}, 'FOO'),
                (Ø, '')
            ], m.slackmarkup('<FOO>', Ø))
Beispiel #2
0
    def test___init___0(self):
        m = slack.SlackMessage(
            slack.Slack(context.Context(), slackname='test'), {
                'type': 'message',
                'channel': 'foo',
                'ts': 0.0,
                })
        os.environ['TZ'] = 'GMT'

        self.assertEqual(str(m), '00:00 slack.test; foo\n')
        self.assertEqual(
            repr(m),
            '<SlackMessage 0.0 <SlackAddress slack.test ?, foo> 0 chars>')
Beispiel #3
0
    async def test_react_add_remove(self):
        s = slack.Slack(None, name='test')
        m = slack.SlackMessage(s, {'type': 'message', 'channel': 'foo'})
        o = object()

        m.react = Mock(return_value=mocks.promise())

        await m.add_reaction(o)
        m.react.assert_called_with(o, 'reactions.add')

        m.react = Mock(return_value=mocks.promise())

        await m.remove_reaction(o)
        m.react.assert_called_with(o, 'reactions.remove')
Beispiel #4
0
    async def test_edit_message(self):
        s = slack.Slack(None, name='test')
        m = slack.SlackMessage(
            s, {'type': 'message', 'channel': 'foo', 'ts': 0.0})

        window = Mock()
        window.cursor = None
        window.read_string.return_value = mocks.promise('foo')

        with self.assertRaises(Exception):
            await m.edit_message(window)

        s.method = Mock(return_value=mocks.promise({'ok': True}))

        window.read_string.return_value = mocks.promise('\nfoo')
        await m.edit_message(window)

        window.read_string.assert_called()
        s.method.assert_called_with(
            'chat.update', channel='foo', ts=0.0, text='foo')
Beispiel #5
0
    async def test_react(self):
        s = slack.Slack(None, name='test')
        s.emoji = {}
        m = slack.SlackMessage(
            s, {'type': 'message', 'channel': 'foo', 'ts': 0.0})
        window = Mock()
        window.read_oneof.return_value = mocks.promise('foo')

        await m.react(window, 'reactions.add')

        window.read_oneof.assert_called()

        m.data['reactions'] = [{'name': 'star'}]
        window.read_oneof.return_value = mocks.promise('star')
        s.method = Mock(return_value=mocks.promise({'ok': True}))

        await m.react(window, 'reactions.add')

        self.assertEqual(['star'], s.used_emoji)
        s.method.assert_called_with(
            'reactions.add', name='star', channel='foo', timestamp=0.0)
Beispiel #6
0
    async def test___init___1(self):
        s = slack.Slack(None, name='test')

        await s.incoming({
            'type': 'team_join',
            'user': {'id': 'USER', 'name': 'user'},
            })

        await s.incoming({
            'type': 'channel_created',
            'channel': {
                'id': 'CHANNEL', 'name': 'channel', 'is_member': True},
            })

        await s.incoming({
            'type': 'im_created',
            'channel': {
                'id': 'IM', 'user': '******'},
            })

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'user': '******',
            'type': 'message',
            'text': None,
            'channel': 'CHANNEL',
            })

        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\n', str(m))

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'bot_id': 'USER',
            'type': 'message',
            'text': None,
            'channel': 'CHANNEL',
            })

        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\n', str(m))

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'user': {'id': 'USER'},
            'type': 'message',
            'text': 'text',
            'channel': 'CHANNEL',
            })

        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\ntext', str(m))

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'user': '******',
            'type': 'message',
            'text': 'text<bar|foo>text',
            'channel': 'CHANNEL',
            })

        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\ntextfootext', str(m))

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'user': '******',
            'type': 'message',
            'text': '<@USER>\n<#CHANNEL>\n<foo>',
            'channel': 'CHANNEL',
            })

        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\nuser\n#channel\nfoo', str(m))
        self.assertEqual('test; #channel', m.followup())
        self.assertEqual(
            filters.And(
                filters.Compare('==', 'backend', 'test'),
                filters.Compare('==', 'channel', '#channel'),
                filters.Compare('==', 'sender', 'test; user'),
            ),
            m.filter(1))

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'user': '******',
            'type': 'message',
            'text': 'foo',
            'channel': 'IM',
            })

        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\nfoo', str(m))
        self.assertTrue(m.personal)
        self.assertEqual('test; user', m.followup())

        m = slack.SlackMessage(s, {
            'ts': 0.0,
            'user': '******',
            'type': 'presence_change',
            'presence': 'out',
            })
        self.assertEqual('test; user', str(m.sender))
        self.assertEqual('00:00 test; user\nuser is out', str(m))
        self.assertTrue(m.noise)
        self.assertEqual('test; user', m.followup())