| # 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 accounts 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 TestListAccounts(cloudstackTestCase): |
| |
| @classmethod |
| def setUpClass(cls): |
| testClient = super(TestListAccounts, 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.accounts = list_accounts(cls.apiclient, listall=True) |
| |
| cls.child_domain_1 = Domain.create( |
| cls.apiclient, |
| cls.services["domain"], |
| parentdomainid=cls.domain.id |
| ) |
| cls._cleanup.append(cls.child_domain_1) |
| |
| cls.services["account"]["username"] = "child_account_admin" |
| cls.child_account_admin = Account.create( |
| cls.apiclient, |
| cls.services["account"], |
| admin=True, |
| domainid=cls.child_domain_1.id |
| ) |
| cls._cleanup.append(cls.child_account_admin) |
| |
| cls.services["username"] = "child_account_user" |
| cls.child_account_user = Account.create( |
| cls.apiclient, |
| cls.services["account"], |
| admin=0, |
| domainid=cls.child_domain_1.id |
| ) |
| cls.child_account_user.disable(cls.apiclient) |
| cls._cleanup.append(cls.child_account_user) |
| |
| cls.child_domain_2 = Domain.create( |
| cls.apiclient, |
| cls.services["domain"], |
| parentdomainid=cls.domain.id |
| ) |
| cls._cleanup.append(cls.child_domain_2) |
| |
| @classmethod |
| def tearDownClass(cls): |
| super(TestListAccounts, cls).tearDownClass() |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_01_list_accounts_accounttype_filter(self): |
| """Test listing accounts with accounttype filter |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| accounttype=0, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_user.name, |
| "Check for list response return valid data" |
| ) |
| self.assertEqual( |
| list_account_response[0].accounttype, |
| 0, |
| "Check for list response return valid data" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| accounttype=2, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_admin.name, |
| "Check for list response return valid data" |
| ) |
| self.assertEqual( |
| list_account_response[0].accounttype, |
| 2, |
| "Check for list response return valid data" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_02_list_accounts_domainid_filter(self): |
| """Test listing accounts with domainid filter |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 2, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| self.child_domain_1.id, |
| list_account_response[0].domainid, |
| "Check for list response return valid data" |
| ) |
| self.assertEqual( |
| self.child_domain_1.id, |
| list_account_response[1].domainid, |
| "Check for list response return valid data" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| domainid=self.child_domain_2.id |
| ) |
| self.assertIsNone(list_account_response, "Check for list response return valid data") |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_03_list_accounts_id_filter(self): |
| """Test listing accounts with id filter |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| id=self.child_account_user.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_user.name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| id=self.child_account_admin.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_admin.name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_04_list_accounts_name_filter(self): |
| """Test listing accounts with name filter |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| name=self.child_account_user.name, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_user.name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| name=self.child_account_admin.name, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_admin.name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_05_list_accounts_state_filter(self): |
| """Test listing accounts with state filter |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| state="enabled", |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_admin.name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| state="disabled", |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| len(list_account_response), |
| 1, |
| "List Account response has incorrect length" |
| ) |
| self.assertEqual( |
| list_account_response[0].name, |
| self.child_account_user.name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_06_list_accounts_keyword_filter(self): |
| """Test listing accounts with keyword filter |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| keyword=self.child_account_user.name, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| self.child_account_user.name, |
| list_account_response[0].name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| keyword=self.child_account_admin.name, |
| domainid=self.child_domain_1.id |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| self.child_account_admin.name, |
| list_account_response[0].name, |
| "Expected account name and actual account name should be same" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_07_list_accounts_with_listall_filters(self): |
| """Test listing accounts with listall filters |
| """ |
| list_account_response = Account.list( |
| self.apiclient, |
| listall=False |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| 1, |
| len(list_account_response), |
| "List Account response has incorrect length" |
| ) |
| |
| list_account_response = Account.list( |
| self.apiclient, |
| listall=True |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| 2, |
| len(list_account_response) - len(self.accounts), |
| "List Account response has incorrect length" |
| ) |
| |
| @attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false") |
| def test_08_list_accounts_with_no_filters(self): |
| """Test listing accounts with no filters |
| """ |
| list_account_response = Account.list( |
| self.apiclient |
| ) |
| self.assertTrue( |
| isinstance(list_account_response, list), |
| "List Account response is not a valid list" |
| ) |
| self.assertEqual( |
| 1, |
| len(list_account_response), |
| "List Account response has incorrect length" |
| ) |