1from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer
2from azure.mgmt.botservice import AzureBotService
3from azure.mgmt.botservice.models import (
4    Bot,
5    BotProperties,
6    ErrorException,
7    Sku
8)
9
10class BotServiceConnectionsTestCase(AzureMgmtTestCase):
11    def setUp(self):
12        super(BotServiceConnectionsTestCase, self).setUp()
13        #create a bot here
14        self.client = self.create_mgmt_client(AzureBotService)
15        self.resource_name = self.get_resource_name('azurebot')
16
17    def createBot(self):
18        location = 'global'
19        sku_name = 'Free'
20        kind= 'Bot'
21        display_name = "this is a test bot"
22        description= "this is a description for a test bot"
23        endpoint = "https://bing.com/messages/"
24        msa_app_id = "056d9ad9-17a9-4cc7-aebb-43bf6f293a08"
25        developer_app_insight_key = '59513bad-10a7-4d41-b4d0-b1c34c6af512'
26        developer_app_insights_api_key = 'w24iw5ocbhcig71su7ibaj63hey5ieaozeuwdv11'
27        developer_app_insights_application_id = 'cf03484e-3fdb-4b5e-9ad7-94bde32e5a11'
28        bot = self.client.bots.create(
29            resource_group_name = self.resource_group_name,
30            resource_name = self.resource_name,
31            parameters = Bot(
32                location= location,
33                sku = Sku(name=sku_name),
34                kind= kind,
35                properties= BotProperties(
36                    display_name = display_name,
37                    description= description,
38                    endpoint = endpoint,
39                    msa_app_id = msa_app_id,
40                    developer_app_insight_key = developer_app_insight_key,
41                    developer_app_insights_api_key = developer_app_insights_api_key,
42                    developer_app_insights_application_id = developer_app_insights_application_id,
43                )
44            )
45        )
46
47    def tearDown(self):
48        super(BotServiceConnectionsTestCase, self).tearDown()
49
50
51    @ResourceGroupPreparer(name_prefix='python_conn')
52    def test_bot_connection_operations(self, resource_group):
53        self.resource_group_name = resource_group.name
54        self.createBot()
55        from azure.mgmt.botservice.models import ConnectionSetting, ConnectionSettingProperties, ConnectionSettingParameter
56        connection_resource_name = self.get_resource_name('myconnection')
57        # create a connection
58        setting_payload = ConnectionSetting(
59            location='global',
60            properties=ConnectionSettingProperties(
61                client_id='clientId',
62                client_secret='clientSecret',
63                scopes='read,write',
64                service_provider_id='00ea67de-bfc6-4f45-9ede-083899596b7b',
65                parameters=[ConnectionSettingParameter(key='key1', value='value1')]
66            )
67        )
68        setting = self.client.bot_connection.create(
69            resource_group_name=resource_group.name,
70            resource_name=self.resource_name,
71            connection_name=connection_resource_name,
72            parameters=setting_payload
73        )
74        self.assertIsNotNone(setting)
75        self.assertEqual(setting.properties.client_id, 'clientId')
76
77        # get a connection
78        setting = self.client.bot_connection.get(
79            resource_group_name=resource_group.name,
80            resource_name=self.resource_name,
81            connection_name=connection_resource_name
82        )
83        self.assertIsNotNone(setting)
84        #list all connections
85        settings = self.client.bot_connection.list_by_bot_service(
86            resource_group_name = resource_group.name,
87            resource_name=self.resource_name
88        )
89        self.assertIsNotNone(setting)
90        self.assertTrue(len(list(settings)) == 1)
91
92        # delete a connection
93        setting = self.client.bot_connection.delete(
94            resource_group_name=resource_group.name,
95            resource_name=self.resource_name,
96            connection_name=connection_resource_name
97        )
98        with self.assertRaises(ErrorException):
99            setting = self.client.bot_connection.get(
100                resource_group_name=resource_group.name,
101                resource_name=self.resource_name,
102                connection_name=connection_resource_name
103            )
104
105
106    def test_bot_connection_serviceproviders(self):
107        service_provider_responses = self.client.bot_connection.list_service_providers()
108        self.assertTrue(len(service_provider_responses.value) > 0)