nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 1 | # Copyright 2013 OpenStack Foundation |
| 2 | # All Rights Reserved. |
| 3 | # |
| 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| 5 | # not use this file except in compliance with the License. You may obtain |
| 6 | # a copy of the License at |
| 7 | # |
| 8 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | # |
| 10 | # Unless required by applicable law or agreed to in writing, software |
| 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| 13 | # License for the specific language governing permissions and limitations |
| 14 | # under the License. |
| 15 | |
Martin Pavlasek | 4c3f2ab | 2014-04-15 17:15:15 +0200 | [diff] [blame] | 16 | from tempest.api.identity import base |
Fei Long Wang | d39431f | 2015-05-14 11:30:48 +1200 | [diff] [blame] | 17 | from tempest.common.utils import data_utils |
Martin Pavlasek | 4c3f2ab | 2014-04-15 17:15:15 +0200 | [diff] [blame] | 18 | from tempest import config |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 19 | from tempest.lib.common.utils import test_utils |
Martin Pavlasek | 4c3f2ab | 2014-04-15 17:15:15 +0200 | [diff] [blame] | 20 | from tempest import test |
| 21 | |
Martin Pavlasek | 4c3f2ab | 2014-04-15 17:15:15 +0200 | [diff] [blame] | 22 | CONF = config.CONF |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 23 | |
| 24 | |
Matthew Treinish | db2c597 | 2014-01-31 22:18:59 +0000 | [diff] [blame] | 25 | class DomainsTestJSON(base.BaseIdentityV3AdminTest): |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 26 | |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 27 | @classmethod |
| 28 | def resource_setup(cls): |
| 29 | super(DomainsTestJSON, cls).resource_setup() |
| 30 | # Create some test domains to be used during tests |
| 31 | # One of those domains will be disabled |
| 32 | cls.setup_domains = list() |
| 33 | for i in range(3): |
| 34 | domain = cls.domains_client.create_domain( |
| 35 | data_utils.rand_name('domain'), |
| 36 | description=data_utils.rand_name('domain-desc'), |
| 37 | enabled=i < 2)['domain'] |
| 38 | cls.setup_domains.append(domain) |
| 39 | |
| 40 | @classmethod |
| 41 | def resource_cleanup(cls): |
| 42 | for domain in cls.setup_domains: |
| 43 | cls._delete_domain(domain['id']) |
| 44 | super(DomainsTestJSON, cls).resource_cleanup() |
| 45 | |
| 46 | @classmethod |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 47 | def _delete_domain(self, domain_id): |
Chang Bo Guo | f099f80 | 2013-09-13 19:01:46 -0700 | [diff] [blame] | 48 | # It is necessary to disable the domain before deleting, |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 49 | # or else it would result in unauthorized error |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 50 | self.domains_client.update_domain(domain_id, enabled=False) |
| 51 | self.domains_client.delete_domain(domain_id) |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 52 | |
Chris Hoge | 7579c1a | 2015-02-26 14:12:15 -0800 | [diff] [blame] | 53 | @test.idempotent_id('8cf516ef-2114-48f1-907b-d32726c734d4') |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 54 | def test_list_domains(self): |
Attila Fazekas | f7f34f9 | 2013-08-01 17:01:44 +0200 | [diff] [blame] | 55 | # Test to list domains |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 56 | fetched_ids = list() |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 57 | # List and Verify Domains |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 58 | body = self.domains_client.list_domains()['domains'] |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 59 | for d in body: |
| 60 | fetched_ids.append(d['id']) |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 61 | missing_doms = [d for d in self.setup_domains |
| 62 | if d['id'] not in fetched_ids] |
nayna-patel | 4df72dc | 2013-05-29 10:27:24 +0000 | [diff] [blame] | 63 | self.assertEqual(0, len(missing_doms)) |
| 64 | |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 65 | @test.idempotent_id('c6aee07b-4981-440c-bb0b-eb598f58ffe9') |
| 66 | def test_list_domains_filter_by_name(self): |
| 67 | # List domains filtering by name |
| 68 | params = {'name': self.setup_domains[0]['name']} |
| 69 | fetched_domains = self.domains_client.list_domains( |
| 70 | params=params)['domains'] |
| 71 | # Verify the filtered list is correct, domain names are unique |
| 72 | # so exactly one domain should be found with the provided name |
| 73 | self.assertEqual(1, len(fetched_domains)) |
| 74 | self.assertEqual(self.setup_domains[0]['name'], |
| 75 | fetched_domains[0]['name']) |
| 76 | |
| 77 | @test.idempotent_id('3fd19840-65c1-43f8-b48c-51bdd066dff9') |
| 78 | def test_list_domains_filter_by_enabled(self): |
| 79 | # List domains filtering by enabled domains |
| 80 | params = {'enabled': True} |
| 81 | fetched_domains = self.domains_client.list_domains( |
| 82 | params=params)['domains'] |
| 83 | # Verify the filtered list is correct |
| 84 | self.assertIn(self.setup_domains[0], fetched_domains) |
| 85 | self.assertIn(self.setup_domains[1], fetched_domains) |
| 86 | for domain in fetched_domains: |
| 87 | self.assertEqual(True, domain['enabled']) |
| 88 | |
Matthew Treinish | 5c660ab | 2014-05-18 21:14:36 -0400 | [diff] [blame] | 89 | @test.attr(type='smoke') |
Chris Hoge | 7579c1a | 2015-02-26 14:12:15 -0800 | [diff] [blame] | 90 | @test.idempotent_id('f2f5b44a-82e8-4dad-8084-0661ea3b18cf') |
nayna-patel | 049e157 | 2013-06-19 09:22:35 +0000 | [diff] [blame] | 91 | def test_create_update_delete_domain(self): |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 92 | # Create domain |
Ken'ichi Ohmichi | 9650847 | 2015-03-23 01:43:42 +0000 | [diff] [blame] | 93 | d_name = data_utils.rand_name('domain') |
| 94 | d_desc = data_utils.rand_name('domain-desc') |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 95 | domain = self.domains_client.create_domain( |
John Warren | 56317e0 | 2015-08-12 20:48:32 +0000 | [diff] [blame] | 96 | d_name, description=d_desc)['domain'] |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 97 | self.addCleanup(test_utils.call_and_ignore_notfound_exc, |
| 98 | self._delete_domain, domain['id']) |
nayna-patel | 049e157 | 2013-06-19 09:22:35 +0000 | [diff] [blame] | 99 | self.assertIn('id', domain) |
| 100 | self.assertIn('description', domain) |
| 101 | self.assertIn('name', domain) |
| 102 | self.assertIn('enabled', domain) |
| 103 | self.assertIn('links', domain) |
| 104 | self.assertIsNotNone(domain['id']) |
| 105 | self.assertEqual(d_name, domain['name']) |
| 106 | self.assertEqual(d_desc, domain['description']) |
Andrea Frittoli | c097835 | 2015-02-06 15:57:40 +0000 | [diff] [blame] | 107 | self.assertEqual(True, domain['enabled']) |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 108 | # Update domain |
Ken'ichi Ohmichi | 9650847 | 2015-03-23 01:43:42 +0000 | [diff] [blame] | 109 | new_desc = data_utils.rand_name('new-desc') |
| 110 | new_name = data_utils.rand_name('new-name') |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 111 | updated_domain = self.domains_client.update_domain( |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 112 | domain['id'], name=new_name, description=new_desc, |
| 113 | enabled=False)['domain'] |
nayna-patel | 049e157 | 2013-06-19 09:22:35 +0000 | [diff] [blame] | 114 | self.assertIn('id', updated_domain) |
| 115 | self.assertIn('description', updated_domain) |
| 116 | self.assertIn('name', updated_domain) |
| 117 | self.assertIn('enabled', updated_domain) |
| 118 | self.assertIn('links', updated_domain) |
| 119 | self.assertIsNotNone(updated_domain['id']) |
| 120 | self.assertEqual(new_name, updated_domain['name']) |
| 121 | self.assertEqual(new_desc, updated_domain['description']) |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 122 | self.assertEqual(False, updated_domain['enabled']) |
| 123 | # Show domain |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 124 | fetched_domain = self.domains_client.show_domain( |
| 125 | domain['id'])['domain'] |
nayna-patel | 049e157 | 2013-06-19 09:22:35 +0000 | [diff] [blame] | 126 | self.assertEqual(new_name, fetched_domain['name']) |
| 127 | self.assertEqual(new_desc, fetched_domain['description']) |
Castulo J. Martinez | 0a592b4 | 2016-05-13 09:15:23 -0700 | [diff] [blame] | 128 | self.assertEqual(False, fetched_domain['enabled']) |
| 129 | # Delete domain |
| 130 | self.domains_client.delete_domain(domain['id']) |
| 131 | body = self.domains_client.list_domains()['domains'] |
| 132 | domains_list = [d['id'] for d in body] |
| 133 | self.assertNotIn(domain['id'], domains_list) |
ravikumar-venkatesan | bf2c494 | 2015-02-20 07:08:18 +0000 | [diff] [blame] | 134 | |
ravikumar-venkatesan | bf2c494 | 2015-02-20 07:08:18 +0000 | [diff] [blame] | 135 | @test.idempotent_id('036df86e-bb5d-42c0-a7c2-66b9db3a6046') |
| 136 | def test_create_domain_with_disabled_status(self): |
| 137 | # Create domain with enabled status as false |
Ken'ichi Ohmichi | 9650847 | 2015-03-23 01:43:42 +0000 | [diff] [blame] | 138 | d_name = data_utils.rand_name('domain') |
| 139 | d_desc = data_utils.rand_name('domain-desc') |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 140 | domain = self.domains_client.create_domain( |
John Warren | 56317e0 | 2015-08-12 20:48:32 +0000 | [diff] [blame] | 141 | d_name, description=d_desc, enabled=False)['domain'] |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 142 | self.addCleanup(self.domains_client.delete_domain, domain['id']) |
ravikumar-venkatesan | bf2c494 | 2015-02-20 07:08:18 +0000 | [diff] [blame] | 143 | self.assertEqual(d_name, domain['name']) |
| 144 | self.assertFalse(domain['enabled']) |
| 145 | self.assertEqual(d_desc, domain['description']) |
ravikumar-venkatesan | ec4d497 | 2015-02-18 11:31:38 +0000 | [diff] [blame] | 146 | |
ravikumar-venkatesan | ec4d497 | 2015-02-18 11:31:38 +0000 | [diff] [blame] | 147 | @test.idempotent_id('2abf8764-309a-4fa9-bc58-201b799817ad') |
| 148 | def test_create_domain_without_description(self): |
| 149 | # Create domain only with name |
Ken'ichi Ohmichi | 80369a9 | 2015-04-06 23:41:14 +0000 | [diff] [blame] | 150 | d_name = data_utils.rand_name('domain') |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 151 | domain = self.domains_client.create_domain(d_name)['domain'] |
ravikumar-venkatesan | ec4d497 | 2015-02-18 11:31:38 +0000 | [diff] [blame] | 152 | self.addCleanup(self._delete_domain, domain['id']) |
| 153 | self.assertIn('id', domain) |
| 154 | expected_data = {'name': d_name, 'enabled': True} |
| 155 | self.assertIsNone(domain['description']) |
| 156 | self.assertDictContainsSubset(expected_data, domain) |
Martin Pavlasek | 4c3f2ab | 2014-04-15 17:15:15 +0200 | [diff] [blame] | 157 | |
| 158 | |
| 159 | class DefaultDomainTestJSON(base.BaseIdentityV3AdminTest): |
| 160 | |
| 161 | @classmethod |
| 162 | def resource_setup(cls): |
| 163 | cls.domain_id = CONF.identity.default_domain_id |
| 164 | super(DefaultDomainTestJSON, cls).resource_setup() |
| 165 | |
| 166 | @test.attr(type='smoke') |
| 167 | @test.idempotent_id('17a5de24-e6a0-4e4a-a9ee-d85b6e5612b5') |
| 168 | def test_default_domain_exists(self): |
Daniel Mellado | 91a26b6 | 2016-02-11 11:13:04 +0000 | [diff] [blame] | 169 | domain = self.domains_client.show_domain(self.domain_id)['domain'] |
Martin Pavlasek | 4c3f2ab | 2014-04-15 17:15:15 +0200 | [diff] [blame] | 170 | |
| 171 | self.assertTrue(domain['enabled']) |