diff --git a/etc/tempest.conf.sample b/etc/tempest.conf.sample index 9e67540246..d5f3acee7a 100644 --- a/etc/tempest.conf.sample +++ b/etc/tempest.conf.sample @@ -571,6 +571,9 @@ # applies to user and project (string value) #admin_domain_name = +# ID of the default domain (string value) +#default_domain_id = default + [identity-feature-enabled] diff --git a/tempest/api/identity/admin/v3/test_domains.py b/tempest/api/identity/admin/v3/test_domains.py index 79943bb1ae..b775e9199a 100644 --- a/tempest/api/identity/admin/v3/test_domains.py +++ b/tempest/api/identity/admin/v3/test_domains.py @@ -13,10 +13,13 @@ # License for the specific language governing permissions and limitations # under the License. +from tempest.api.identity import base +from tempest import config +from tempest import test + from tempest_lib.common.utils import data_utils -from tempest.api.identity import base -from tempest import test +CONF = config.CONF class DomainsTestJSON(base.BaseIdentityV3AdminTest): @@ -105,3 +108,18 @@ class DomainsTestJSON(base.BaseIdentityV3AdminTest): expected_data = {'name': d_name, 'enabled': True} self.assertIsNone(domain['description']) self.assertDictContainsSubset(expected_data, domain) + + +class DefaultDomainTestJSON(base.BaseIdentityV3AdminTest): + + @classmethod + def resource_setup(cls): + cls.domain_id = CONF.identity.default_domain_id + super(DefaultDomainTestJSON, cls).resource_setup() + + @test.attr(type='smoke') + @test.idempotent_id('17a5de24-e6a0-4e4a-a9ee-d85b6e5612b5') + def test_default_domain_exists(self): + domain = self.client.get_domain(self.domain_id) + + self.assertTrue(domain['enabled']) diff --git a/tempest/api/identity/base.py b/tempest/api/identity/base.py index 878ff6d81f..913e807b42 100644 --- a/tempest/api/identity/base.py +++ b/tempest/api/identity/base.py @@ -172,6 +172,12 @@ class BaseIdentityV3AdminTest(BaseIdentityV3Test): if len(role) > 0: return role[0] + def delete_domain(self, domain_id): + # NOTE(mpavlase) It is necessary to disable the domain before deleting + # otherwise it raises Forbidden exception + self.client.update_domain(domain_id, enabled=False) + self.client.delete_domain(domain_id) + class DataGenerator(object): diff --git a/tempest/config.py b/tempest/config.py index 431ace5557..e365b2beda 100644 --- a/tempest/config.py +++ b/tempest/config.py @@ -142,6 +142,9 @@ IdentityGroup = [ cfg.StrOpt('admin_domain_name', help="Admin domain name for authentication (Keystone V3)." "The same domain applies to user and project"), + cfg.StrOpt('default_domain_id', + default='default', + help="ID of the default domain"), ] identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',