1from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer
2from azure.mgmt.botservice import AzureBotService
3from azure.mgmt.botservice.models import (
4    Bot,
5    BotProperties,
6    Sku,
7    ErrorException
8)
9
10class CoreBotServiceTestCase(AzureMgmtTestCase):
11    def setUp(self):
12        super(CoreBotServiceTestCase, self).setUp()
13        self.client = self.create_mgmt_client(AzureBotService)
14        self.resource_name = self.get_resource_name('azurebotservice')
15        self.location = 'global'
16        self.sku_name = 'S1'
17        self.kind= 'Bot'
18        self.display_name = "this is a test bot"
19        self.description= "this is a description for a test bot"
20        self.endpoint = "https://bing.com/messages/"
21        self.msa_app_id = "41a220b9-6571-4f0b-bbd2-43f1c1d82f51"
22        self.developer_app_insight_key = '59513bad-10a7-4d41-b4d0-b1c34c6af52a'
23        self.developer_app_insights_api_key = 'w24iw5ocbhcig71su7ibaj63hey5ieaozeuwdv2r'
24        self.developer_app_insights_application_id = 'cf03484e-3fdb-4b5e-9ad7-94bde32e5a2b'
25
26    def validate_bot_properties(self, bot):
27        self.assertEqual(bot.id, '/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.BotService/botServices/{2}'.format(self.client.config.subscription_id,self.resource_group_name,self.resource_name))
28        self.assertEqual(bot.name, self.resource_name)
29        self.assertEqual(bot.location, self.location)
30        self.assertEqual(bot.sku.name, self.sku_name)
31        self.assertEqual(bot.kind, self.kind)
32        self.assertEqual(bot.properties.display_name, self.display_name)
33        self.assertEqual(bot.properties.description, self.description)
34        self.assertEqual(bot.properties.endpoint, self.endpoint)
35        self.assertEqual(bot.properties.msa_app_id, self.msa_app_id)
36        self.assertEqual(bot.properties.developer_app_insight_key, self.developer_app_insight_key)
37        self.assertEqual(bot.properties.developer_app_insights_api_key, None) #this password should not be returned in the response
38        self.assertEqual(bot.properties.developer_app_insights_application_id, self.developer_app_insights_application_id)
39
40    @ResourceGroupPreparer(name_prefix='python_test_bot')
41    def test_bot_operations(self, resource_group):
42        self.resource_group_name = resource_group.name
43        bot = self.client.bots.create(
44            resource_group_name = self.resource_group_name,
45            resource_name = self.resource_name,
46            parameters = Bot(
47                location= self.location,
48                sku = Sku(name=self.sku_name),
49                kind= self.kind,
50                properties= BotProperties(
51                    display_name = self.display_name,
52                    description= self.description,
53                    endpoint = self.endpoint,
54                    msa_app_id = self.msa_app_id,
55                    developer_app_insight_key = self.developer_app_insight_key,
56                    developer_app_insights_api_key = self.developer_app_insights_api_key,
57                    developer_app_insights_application_id = self.developer_app_insights_application_id,
58                )
59            )
60        )
61        self.validate_bot_properties(bot)
62
63        bot = self.client.bots.get(
64            resource_group_name = self.resource_group_name,
65            resource_name = self.resource_name,
66        )
67        self.validate_bot_properties(bot)
68
69        bot.properties.description = 'this is another description'
70        self.description = bot.properties.description
71        bot = self.client.bots.update(
72            resource_group_name = self.resource_group_name,
73            resource_name = self.resource_name,
74            properties = bot.properties
75        )
76        # self.validate_bot_properties(bot)
77        bot = self.client.bots.delete(
78            resource_group_name = self.resource_group_name,
79            resource_name = self.resource_name,
80        )
81
82        #ensure that the bot was not found with a get
83        with self.assertRaises(ErrorException):
84            bot = self.client.bots.get(
85                resource_group_name = self.resource_group_name,
86                resource_name = self.resource_name
87            )