1# coding: utf-8
2
3#-------------------------------------------------------------------------
4# Copyright (c) Microsoft Corporation. All rights reserved.
5# Licensed under the MIT License. See License.txt in the project root for
6# license information.
7#--------------------------------------------------------------------------
8
9
10import unittest
11
12import azure.mgmt.resource.resources.v2019_10_01
13
14from devtools_testutils import AzureMgmtTestCase, RandomNameResourceGroupPreparer
15
16from _aio_testcase import AzureMgmtAsyncTestCase
17
18
19class MgmtResourceAioTest(AzureMgmtAsyncTestCase):
20
21    def setUp(self):
22        super(MgmtResourceAioTest, self).setUp()
23        from azure.mgmt.resource.resources.aio import ResourceManagementClient
24        self.resource_client = self.create_mgmt_aio_client(
25            ResourceManagementClient
26        )
27
28    @unittest.skip('hard to test')
29    def test_resource_groups(self):
30        group_name = "test_mgmt_resource_test_resource_groups457f1050"
31        # Create or update
32        params_create = azure.mgmt.resource.resources.v2019_10_01.models.ResourceGroup(
33            location=self.region,
34            tags={
35                'tag1': 'value1',
36            },
37        )
38        result = self.event_loop.run_until_complete(
39            self.resource_client.resource_groups.create_or_update(
40                group_name,
41                params_create,
42            )
43        )
44
45        # Get
46        result_get = self.event_loop.run_until_complete(
47            self.resource_client.resource_groups.get(group_name)
48        )
49        self.assertEqual(result_get.name, group_name)
50        self.assertEqual(result_get.tags['tag1'], 'value1')
51
52        # Check existence
53        result_check = self.event_loop.run_until_complete(
54            self.resource_client.resource_groups.check_existence(
55                group_name,
56            )
57        )
58        self.assertTrue(result_check)
59
60        result_check = self.event_loop.run_until_complete(
61            self.resource_client.resource_groups.check_existence(
62                'unknowngroup',
63            )
64        )
65        self.assertFalse(result_check)
66
67        # List
68        result_list = self.to_list(
69            self.resource_client.resource_groups.list()
70        )
71        result_list = list(result_list)
72        self.assertGreater(len(result_list), 0)
73
74        result_list_top = self.resource_client.resource_groups.list(top=2)
75
76        # Patch
77        params_patch = azure.mgmt.resource.resources.v2019_10_01.models.ResourceGroupPatchable(
78            tags={
79                'tag1': 'valueA',
80                'tag2': 'valueB',
81            },
82        )
83        result_patch = self.event_loop.run_until_complete(
84            self.resource_client.resource_groups.update(
85                group_name,
86                params_patch,
87            )
88        )
89        self.assertEqual(result_patch.tags['tag1'], 'valueA')
90        self.assertEqual(result_patch.tags['tag2'], 'valueB')
91
92        # List resources
93        resources = self.to_list(
94            self.resource_client.resources.list_by_resource_group(
95                group_name
96            )
97        )
98
99        resources = list(resources)
100
101        # Export template
102        BODY = {
103          'resources': ['*']
104        }
105        result = self.event_loop.run_until_complete(
106            self.resource_client.resource_groups.begin_export_template(
107                group_name,
108                BODY
109            )
110        )
111        template = self.event_loop.run_until_complete(
112            result.result()
113        )
114        # self.assertTrue(hasattr(template, 'template'))
115
116        # Delete
117        result = self.event_loop.run_until_complete(
118            self.resource_client.resource_groups.begin_delete(group_name)
119        )
120        self.event_loop.run_until_complete(
121            result.result()
122        )
123