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 }, )
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
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(), "")
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")
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")
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))
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")
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", {})
async def create_image(self, event, roomid): """Send a Image event.""" kwargs = await self._file_kwargs(event, roomid) return events.Image(**kwargs)