Example #1
0
    def test_fetch_from_empty_cache(self):
        """Test if there are not any message returned when the cache is empty"""

        cache = Cache(self.tmp_path)
        slack = Slack('C011DUKE8', 'aaaa', max_items=5, cache=cache)
        cached_messages = [msg for msg in slack.fetch_from_cache()]
        self.assertEqual(len(cached_messages), 0)
Example #2
0
    def test_fetch_from_non_set_cache(self):
        """Test if a error is raised when the cache was not set"""

        slack = Slack('C011DUKE8', 'aaaa', max_items=5)

        with self.assertRaises(CacheError):
            _ = [msg for msg in slack.fetch_from_cache()]
Example #3
0
    def test_fetch_from_cache(self, mock_utcnow):
        """Test whether the cache works"""

        mock_utcnow.return_value = datetime.datetime(
            2017, 1, 1, tzinfo=dateutil.tz.tzutc())

        http_requests = setup_http_server()

        # First, we fetch the events from the server,
        # storing them in a cache
        cache = Cache(self.tmp_path)
        slack = Slack('C011DUKE8', 'aaaa', max_items=5, cache=cache)
        messages = [msg for msg in slack.fetch()]

        self.assertEqual(len(http_requests), 5)

        # Now, we get the messages from the cache.
        # The events should be the same and there won't be
        # any new request to the server
        cached_messages = [msg for msg in slack.fetch_from_cache()]
        self.assertEqual(len(cached_messages), len(messages))

        expected = [
            ("<@U0003|dizquierdo> has joined the channel",
             'bb95a1facf7d61baaf57322f3d6b6d2d45af8aeb', 1427799888.0,
             '*****@*****.**'),
            ("tengo el m\u00f3vil", 'f8668de6fadeb5730e0a80d4c8e5d3f8d175f4d5',
             1427135890.000071, '*****@*****.**'),
            ("hey acs", '29c2942a704c4e0b067daeb76edb2f826376cecf',
             1427135835.000070, '*****@*****.**'),
            ("¿vale?", '757e88ea008db0fff739dd261179219aedb84a95',
             1427135740.000069, '*****@*****.**'),
            ("jsmanrique: tenemos que dar m\u00e9tricas super chulas",
             'e92555381bc431a53c0b594fc118850eafd6e212', 1427135733.000068,
             '*****@*****.**'),
            ("hi!", 'b92892e7b65add0e83d0839de20b2375a42014e8',
             1427135689.000067, '*****@*****.**'),
            ("hi!", 'e59d9ca0d9a2ba1c747dc60a0904edd22d69e20e',
             1427135634.000066, '*****@*****.**')
        ]

        self.assertEqual(len(cached_messages), len(expected))

        for x in range(len(cached_messages)):
            cmessage = cached_messages[x]
            expc = expected[x]
            self.assertEqual(cmessage['data']['text'], expc[0])
            self.assertEqual(cmessage['uuid'], expc[1])
            self.assertEqual(cmessage['origin'], 'https://slack.com/C011DUKE8')
            self.assertEqual(cmessage['updated_on'], expc[2])
            self.assertEqual(cmessage['category'], 'message')
            self.assertEqual(cmessage['tag'], 'https://slack.com/C011DUKE8')
            self.assertEqual(cmessage['data']['user_data']['profile']['email'],
                             expc[3])

            # Compare chached and fetched message
            self.assertDictEqual(cmessage['data'], messages[x]['data'])

        # No more requests were sent
        self.assertEqual(len(http_requests), 5)