cohit's picture
Upload folder using huggingface_hub
0827183 verified
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
import os
import base64
import asyncio
import pytest
import msrest
from botbuilder.schema import AttachmentData, ErrorResponseException
from botframework.connector.aio import ConnectorClient
from botframework.connector.auth import MicrosoftAppCredentials
from authentication_stub import MicrosoftTokenAuthenticationStub
SERVICE_URL = "https://slack.botframework.com"
CHANNEL_ID = "slack"
BOT_NAME = "botbuilder-pc-bot"
BOT_ID = "B21UTEF8S:T03CWQ0QB"
RECIPIENT_ID = "U19KH8EHJ:T03CWQ0QB"
CONVERSATION_ID = "B21UTEF8S:T03CWQ0QB:D2369CT7C"
async def get_auth_token():
try:
# pylint: disable=import-outside-toplevel
from .app_creds_real import MICROSOFT_APP_ID, MICROSOFT_APP_PASSWORD
# Define a "app_creds_real.py" file with your bot credentials as follows:
# MICROSOFT_APP_ID = '...'
# MICROSOFT_APP_PASSWORD = '...'
return MicrosoftAppCredentials(
MICROSOFT_APP_ID, MICROSOFT_APP_PASSWORD
).get_access_token()
except ImportError:
return "STUB_ACCESS_TOKEN"
def read_base64(path_to_file):
path_to_current_file = os.path.realpath(__file__)
current_directory = os.path.dirname(path_to_current_file)
path_to_file = os.path.join(current_directory, "resources", path_to_file)
with open(path_to_file, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
return encoded_string
async def return_sum(attachment_stream):
counter = 0
async for _ in attachment_stream:
counter += len(_)
return counter
LOOP = asyncio.get_event_loop()
AUTH_TOKEN = LOOP.run_until_complete(get_auth_token())
class AttachmentsTest:
def __init__(self):
super(AttachmentsTest, self).__init__()
self.loop = asyncio.get_event_loop()
@property
def credentials(self):
return MicrosoftTokenAuthenticationStub(AUTH_TOKEN)
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 = self.loop.run_until_complete(
connector.conversations.upload_attachment(CONVERSATION_ID, attachment)
)
attachment_id = response.id
attachment_info = self.loop.run_until_complete(
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
def test_attachments_get_info_invalid_attachment_id_fails(self):
with pytest.raises(ErrorResponseException) as excinfo:
connector = ConnectorClient(self.credentials, base_url=SERVICE_URL)
self.loop.run_until_complete(
connector.attachments.get_attachment_info("bt13796-GJS4yaxDLI")
)
assert "Not Found" in str(excinfo.value)
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 = self.loop.run_until_complete(
connector.conversations.upload_attachment(CONVERSATION_ID, attachment)
)
attachment_id = response.id
attachment_stream = self.loop.run_until_complete(
connector.attachments.get_attachment(attachment_id, "original")
)
assert len(original) == self.loop.run_until_complete(
return_sum(attachment_stream)
)
def test_attachments_get_attachment_view_with_invalid_attachment_id_fails(self):
with pytest.raises(msrest.exceptions.HttpOperationError) as excinfo:
connector = ConnectorClient(self.credentials, base_url=SERVICE_URL)
self.loop.run_until_complete(
connector.attachments.get_attachment("bt13796-GJS4yaxDLI", "original")
)
assert "Not Found" in str(excinfo.value)
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 = self.loop.run_until_complete(
connector.conversations.upload_attachment(CONVERSATION_ID, attachment)
)
attachment_id = response.id
self.loop.run_until_complete(
connector.attachments.get_attachment(attachment_id, "invalid")
)
assert "not found" in str(excinfo.value)