async def test_respond_file_failure(opsdroid, caplog):
    caplog.set_level(logging.DEBUG)

    connector = ConnectorTelegram(connector_config, opsdroid=opsdroid)

    post_response = amock.Mock()
    post_response.status = 400

    file_bytes = b"plain text file example"

    file = opsdroid_events.File(file_bytes=file_bytes, target={"id": "123"})

    with amock.patch(
            "aiohttp.ClientSession.post",
            new=amock.CoroutineMock()) as patched_request, amock.patch.object(
                connector, "build_url") as mocked_build_url:

        patched_request.return_value = asyncio.Future()
        patched_request.return_value.set_result(post_response)

        await connector.send_file(file)

        assert mocked_build_url.called
        assert patched_request.called
        assert "Unable to send file" in caplog.text
示例#2
0
    async def test_file(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.File(
            "user",
            "default",
            mock_connector,
            bytes("some file contents", "utf-8"))

        self.assertEqual(event.user, "user")
        self.assertEqual(event.room, "default")
        self.assertEqual(event.file_bytes.decode(), "some file contents")
示例#3
0
    async def test_file(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.File(bytes("some file contents", "utf-8"),
                            user="******",
                            target="default",
                            connector=mock_connector)

        self.assertEqual(event.user, "user")
        self.assertEqual(event.target, "default")
        self.assertEqual((await event.get_file_bytes()).decode(),
                         "some file contents")
示例#4
0
    async def test_repeat_file_bytes(self, mock_get):
        f = events.File(url="http://spam.eggs/monty.jpg")

        fut = asyncio.Future()
        fut.set_result(b"bob")

        mock_get.return_value.__aenter__.return_value.read = amock.CoroutineMock(
            return_value=fut)

        assert await f.get_file_bytes() == b"bob"
        assert mock_get.call_count == 1

        # Now test we don't re-download the url
        assert await f.get_file_bytes() == b"bob"
        assert mock_get.call_count == 1
    async def test_respond_file(self):
        file_event = events.File(file_bytes=b"aslkdjlaksdjlkajdlk",
                                 target="!test:localhost")
        with amock.patch(api_string.format(
                "send_content")) as patched_send, amock.patch(
                    api_string.format("media_upload")) as patched_upload:

            patched_upload.return_value = asyncio.Future()
            patched_upload.return_value.set_result(
                {"content_uri": "mxc://aurl"})

            patched_send.return_value = asyncio.Future()
            patched_send.return_value.set_result(None)
            await self.connector.send(file_event)

            patched_send.assert_called_once_with("!test:localhost",
                                                 "mxc://aurl",
                                                 "opsdroid_upload", "m.file",
                                                 {})
示例#6
0
 async def create_file(self, event, roomid):
     """Send a File event."""
     kwargs = await self._file_kwargs(event, roomid)
     return events.File(**kwargs)
示例#7
0
    def test_error_on_construct(self):
        with self.assertRaises(ValueError):
            events.File()

        with self.assertRaises(ValueError):
            events.File(b"a", "https://localhost")