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
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")
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")
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", {})
async def create_file(self, event, roomid): """Send a File event.""" kwargs = await self._file_kwargs(event, roomid) return events.File(**kwargs)
def test_error_on_construct(self): with self.assertRaises(ValueError): events.File() with self.assertRaises(ValueError): events.File(b"a", "https://localhost")