| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| """ Tests for API listing of domains with different filters |
| """ |
| |
| # Import Local Modules |
| from marvin.cloudstackTestCase import cloudstackTestCase |
| from marvin.lib.base import (Account, |
| Domain) |
| from marvin.lib.common import (get_domain, list_accounts) |
| # Import System modules |
| from nose.plugins.attrib import attr |
| |
| _multiprocess_shared_ = True |
| |
| |
| class TestListDomains(cloudstackTestCase): |
| |
| @classmethod |
| def setUpClass(cls): |
| testClient = super(TestListDomains, cls).getClsTestClient() |
| cls.apiclient = testClient.getApiClient() |
| cls.services = testClient.getParsedTestDataConfig() |
| cls.domain = get_domain(cls.apiclient) |
| cls.account = list_accounts(cls.apiclient, name="admin")[0] |
| cls._cleanup = [] |
| |
| cls.child_domain_1 = Domain.create( |
| cls.apiclient, |
| cls.services["domain"], |
| parentdomainid=cls.domain.id |
| ) |
| cls._cleanup.append(cls.child_domain_1) |
| |
| cls.child_account_1 = Account.create( |
| cls.apiclient, |
| cls.services["account"], |
| admin=True, |
| domainid=cls.child_domain_1.id |
| ) |
| cls._cleanup.append(cls.child_account_1) |
| |
| cls.child_account_apiclient = testClient.getUserApiClient(cls.child_account_1.user[0]['username'], cls.child_domain_1.name, type=2) |
| |
| cls.child_domain_2 = Domain.create( |
| cls.apiclient, |
| cls.services["domain"], |
| parentdomainid=cls.child_domain_1.id |
| ) |
| cls._cleanup.append(cls.child_domain_2) |
| |
| @classmethod |
| def tearDownClass(cls): |
| super(TestListDomains, cls).tearDownClass() |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_01_list_domains_id_filter(self): |
| """ Test list domains with id filter |
| """ |
| # List all domains |
| domains = Domain.list(self.apiclient, id=self.domain.id) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 1, |
| "List Domain response has incorrect length" |
| ) |
| self.assertEqual( |
| domains[0].id, |
| self.domain.id, |
| "Check if list domains returns valid domain" |
| ) |
| |
| # List all domains with a non-existent id |
| with self.assertRaises(Exception): |
| Domain.list(self.apiclient, id=-1) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_02_list_domains_name_filter(self): |
| """ Test list domains with name filter |
| """ |
| # List all domains |
| domains = Domain.list(self.apiclient, name=self.domain.name) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 1, |
| "List Domain response has incorrect length" |
| ) |
| self.assertEqual( |
| domains[0].name, |
| self.domain.name, |
| "Check if list domains returns valid domain" |
| ) |
| |
| domains = Domain.list(self.apiclient, name="non-existent-domain") |
| self.assertIsNone(domains, "List Domain response is not None") |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_03_list_domains_listall_filter(self): |
| """ Test list domains with listall parameter |
| """ |
| # List all domains |
| domains = Domain.list(self.child_account_apiclient, listall=True) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 2, |
| "List Domain response has incorrect length" |
| ) |
| |
| domains = Domain.list(self.child_account_apiclient, listall=False) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 1, |
| "List Domain response has incorrect length" |
| ) |
| self.assertEqual( |
| domains[0].id, |
| self.child_domain_1.id, |
| "Check if list domains returns valid domain" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_04_list_domains_level_filter(self): |
| """ Test list domains with level filter |
| """ |
| # List all domains |
| domains = Domain.list(self.apiclient, level=0) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 1, |
| "List Domain response has incorrect length" |
| ) |
| self.assertEqual( |
| domains[0].id, |
| self.domain.id, |
| "Check if list domains returns valid domain" |
| ) |
| |
| domains = Domain.list(self.apiclient, level=1) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 1, |
| "List Domain response has incorrect length" |
| ) |
| |
| domains = Domain.list(self.apiclient, level=2) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 1, |
| "List Domain response has incorrect length" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_05_list_domains_no_filter(self): |
| """ Test list domains with no filter |
| """ |
| # List all domains |
| domains = Domain.list(self.apiclient) |
| self.assertEqual( |
| isinstance(domains, list), |
| True, |
| "List Domain response is not a valid list" |
| ) |
| self.assertEqual( |
| len(domains), |
| 3, |
| "List Domain response has incorrect length" |
| ) |