async def _get_spiral_example(self, turn_context: TurnContext) -> Attachment: """ Creates an "Attachment" to be sent from the bot to the user at welcome message. :param turn_context: :return: Attachment """ with open(os.path.join(os.getcwd(), "img/sparch.png"), "rb") as in_file: image_data = in_file.read() connector = await turn_context.adapter.create_connector_client( turn_context.activity.service_url) conversation_id = turn_context.activity.conversation.id response = await connector.conversations.upload_attachment( conversation_id, AttachmentData( original_base64=image_data, type="image/png", ), ) base_uri: str = connector.config.base_url attachment_uri = (base_uri + ("" if base_uri.endswith("/") else "/") + f"v3/attachments/{response.id}/views/original") return Attachment( content_type="image/png", content_url=attachment_uri, )
async def test_on_upload_attachment(self): self._conversation_id = "" mock_adapter = Mock() sut = self.create_skill_handler_for_testing(mock_adapter) attachment_data = AttachmentData() with self.assertRaises(BotActionNotImplementedError): await sut.test_on_upload_attachment(self._claims_identity, self._conversation_id, attachment_data)
def test_attachments_get_attachment_view(self): original = read_base64("bot.png") attachment = AttachmentData( type="image/png", name="Bot.png", original_base64=original, thumbnail_base64=read_base64("bot_icon.png"), ) connector = ConnectorClient(self.credentials, base_url=SERVICE_URL) response = connector.conversations.upload_attachment( CONVERSATION_ID, attachment) attachment_id = response.id attachment_stream = connector.attachments.get_attachment( attachment_id, "original") assert len(original) == sum(len(_) for _ in attachment_stream)
def test_attachments_get_attachment_view_with_invalid_view_id_fails(self): original = read_base64("bot.png") attachment = AttachmentData( type="image/png", name="Bot.png", original_base64=original, thumbnail_base64=read_base64("bot_icon.png"), ) with pytest.raises(msrest.exceptions.HttpOperationError) as excinfo: connector = ConnectorClient(self.credentials, base_url=SERVICE_URL) response = connector.conversations.upload_attachment( CONVERSATION_ID, attachment) attachment_id = response.id connector.attachments.get_attachment(attachment_id, "invalid") assert "not found" in str(excinfo.value)
def test_attachments_upload_and_get_attachment(self): attachment = AttachmentData( type="image/png", name="Bot.png", original_base64=read_base64("bot.png"), thumbnail_base64=read_base64("bot_icon.png"), ) connector = ConnectorClient(self.credentials, base_url=SERVICE_URL) response = connector.conversations.upload_attachment( CONVERSATION_ID, attachment) attachment_id = response.id attachment_info = connector.attachments.get_attachment_info( attachment_id) assert attachment_info is not None assert attachment_info.name == "Bot.png" assert attachment_info.type == "image/png" assert len(attachment_info.views) == 2