async def test_respond_image(self):
        gif_bytes = (b"GIF89a\x01\x00\x01\x00\x00\xff\x00,"
                     b"\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x00;")

        image = events.Image(file_bytes=gif_bytes, 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(image)

            patched_send.assert_called_once_with(
                "!test:localhost",
                "mxc://aurl",
                "opsdroid_upload",
                "m.image",
                {
                    "w": 1,
                    "h": 1,
                    "mimetype": "image/gif",
                    "size": 26
                },
            )
Пример #2
0
async def test_respond_image_failure(opsdroid, caplog):
    caplog.set_level(logging.DEBUG)

    connector = ConnectorTelegram(connector_config, opsdroid=opsdroid)

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

    gif_bytes = (b"GIF89a\x01\x00\x01\x00\x00\xff\x00,"
                 b"\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x00;")

    image = opsdroid_events.Image(file_bytes=gif_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_image(image)

        assert mocked_build_url.called
        assert patched_request.called
        assert "Unable to send image" in caplog.text
Пример #3
0
    async def test_no_mime_type(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.Image(
            b"aslkdjsalkdjlaj", user="******", target="default", connector=mock_connector
        )

        self.assertEqual(await event.get_mimetype(), "")
Пример #4
0
    async def test_explicit_mime_type(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.Image(
            self.gif_bytes,
            user="******",
            target="default",
            mimetype="image/jpeg",
            connector=mock_connector,
        )

        self.assertEqual(await event.get_mimetype(), "image/jpeg")
Пример #5
0
    async def test_image(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.Image(
            "user",
            "default",
            mock_connector,
            bytes("some image contents", "utf-8"))

        self.assertEqual(event.user, "user")
        self.assertEqual(event.room, "default")
        self.assertEqual(event.file_bytes.decode(), "some image contents")
Пример #6
0
    async def test_image(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.Image(
            self.gif_bytes, user="******", target="default", connector=mock_connector
        )

        self.assertEqual(event.user, "user")
        self.assertEqual(event.target, "default")
        self.assertEqual(await event.get_file_bytes(), self.gif_bytes)
        self.assertEqual(await event.get_mimetype(), "image/gif")
        self.assertEqual(await event.get_dimensions(), (1, 1))
Пример #7
0
    async def test_image(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.Image(bytes("some image 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 image contents")
Пример #8
0
    async def test_explicit_mime_type(self):
        opsdroid = amock.CoroutineMock()
        mock_connector = Connector({}, opsdroid=opsdroid)
        event = events.Image(
            self.mkv_bytes,
            user_id="user_id",
            user="******",
            target="default",
            mimetype="video/x-matroska",
            connector=mock_connector,
        )

        self.assertEqual(await event.get_mimetype(), "video/x-matroska")
 async def test_respond_room_image(self):
     image = events.Image(url="mxc://aurl")
     event = events.RoomImage(image, target="!test:localhost")
     with OpsDroid() as opsdroid, amock.patch(
             api_string.format("send_state_event")) as patched_send:
         patched_send.return_value = asyncio.Future()
         patched_send.return_value.set_result({})
         opsdroid.connectors = [self.connector]
         await self.connector.send(event)
         assert patched_send.called_once_with(
             "#test:localhost",
             "m.room.avatar",
             {"url": "mxc://aurl"},
             state_key=None,
         )
    async def test_respond_mxc(self):
        gif_bytes = (b"GIF89a\x01\x00\x01\x00\x00\xff\x00,"
                     b"\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x00;")

        image = events.Image(url="mxc://aurl", target="!test:localhost")
        with amock.patch(api_string.format(
                "send_content")) as patched_send, amock.patch(
                    "opsdroid.events.Image.get_file_bytes") as patched_bytes:

            patched_bytes.return_value = asyncio.Future()
            patched_bytes.return_value.set_result(gif_bytes)

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

            patched_send.assert_called_once_with("!test:localhost",
                                                 "mxc://aurl",
                                                 "opsdroid_upload", "m.image",
                                                 {})
Пример #11
0
 async def create_image(self, event, roomid):
     """Send a Image event."""
     kwargs = await self._file_kwargs(event, roomid)
     return events.Image(**kwargs)