Repository: cloudstack Updated Branches: refs/heads/master 5c5873edf -> 23f4c022c
To Verfiy that list templates by domain admin is not listing the templates of other domains Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/293b9852 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/293b9852 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/293b9852 Branch: refs/heads/master Commit: 293b9852c5eaee15381f85d2c6a67cee8e4aa836 Parents: 5c5873e Author: manasaVeloori <manasa1...@gmail.com> Authored: Fri Apr 24 11:05:22 2015 +0530 Committer: sanjeev <sanj...@apache.org> Committed: Fri Apr 24 15:10:22 2015 +0530 ---------------------------------------------------------------------- .../test_escalation_listTemplateDomainAdmin.py | 157 +++++++++++++++++++ 1 file changed, 157 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/293b9852/test/integration/component/test_escalation_listTemplateDomainAdmin.py ---------------------------------------------------------------------- diff --git a/test/integration/component/test_escalation_listTemplateDomainAdmin.py b/test/integration/component/test_escalation_listTemplateDomainAdmin.py new file mode 100644 index 0000000..6b43651 --- /dev/null +++ b/test/integration/component/test_escalation_listTemplateDomainAdmin.py @@ -0,0 +1,157 @@ + +# 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. + +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.lib.base import (Account, + Domain, Template + ) +from marvin.lib.utils import (cleanup_resources) +from marvin.lib.common import (get_zone, get_builtin_template_info) +from nose.plugins.attrib import attr +import time + + +class TestlistTemplatesDomainAdmin(cloudstackTestCase): + + @classmethod + def setUpClass(cls): + + testClient = super( + TestlistTemplatesDomainAdmin, cls).getClsTestClient() + cls.apiclient = testClient.getApiClient() + cls.testdata = testClient.getParsedTestDataConfig() + cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests()) + cls.hypervisor = cls.testClient.getHypervisorInfo() + builtin_info = get_builtin_template_info(cls.apiclient, cls.zone.id) + cls.testdata["privatetemplate"]["url"] = builtin_info[0] + cls.testdata["privatetemplate"]["hypervisor"] = builtin_info[1] + cls.testdata["privatetemplate"]["format"] = builtin_info[2] + cls.cleanup = [] + +# Create 2 domain admin accounts + + cls.domain1 = Domain.create( + cls.apiclient, + cls.testdata["domain"]) + + cls.domain2 = Domain.create( + cls.apiclient, + cls.testdata["domain"]) + + cls.account1 = Account.create( + cls.apiclient, + cls.testdata["account"], + admin=True, + domainid=cls.domain1.id) + + cls.account2 = Account.create( + cls.apiclient, + cls.testdata["account2"], + admin=True, + domainid=cls.domain2.id) + + cls.debug("Created account %s in domain %s" % + (cls.account1.name, cls.domain1.id)) + cls.debug("Created account %s in domain %s" % + (cls.account2.name, cls.domain2.id)) + + cls.cleanup.append(cls.account1) + cls.cleanup.append(cls.account2) + cls.cleanup.append(cls.domain1) + cls.cleanup.append(cls.domain2) + + @classmethod + def tearDownClass(cls): + try: + # Cleanup resources used + cleanup_resources(cls.apiclient, cls.cleanup) + + except Exception as e: + raise Exception("Warning: Exception during cleanup : %s" % e) + return + +# test that the template register under root/domain1->account1 is not +# listed under root/domain2->account2 + + @attr(tags=["advanced", "basic"], required_hardware="true") + def test_listtemplate(self): + + # Register template under one domain admin(root/domain1->account 1) + + template_register = Template.register( + self.apiclient, + self.testdata["privatetemplate"], + zoneid=self.zone.id, + hypervisor=self.hypervisor, + account=self.account1.name, + domainid=self.domain1.id) + + template_register.download(self.apiclient) + # self.cleanup.append(self.template_register) + + time.sleep(self.testdata["sleep"]) + timeout = self.testdata["timeout"] + while True: + listTemplateResponse = Template.list( + self.apiclient, + templatefilter="all", + id=template_register.id, + account=self.account1.name, + domainid=self.domain1.id + ) + if isinstance(listTemplateResponse, list): + break + elif timeout == 0: + raise Exception("list template failed") + + time.sleep(10) + timeout = timeout - 1 + + self.assertEqual( + isinstance(listTemplateResponse, list), + True, + "Check for list template response return valid data") + + self.assertNotEqual( + len(listTemplateResponse), + 0, + "Check template available in List Templates") + + template_response = listTemplateResponse[0] + self.assertEqual( + template_response.isready, + True, + "Template state is not ready, it is %s" % template_response.isready + ) + + listtemplate = Template.list( + self.apiclient, + zoneid=self.zone.id, + hypervisor=self.hypervisor, + account=self.account2.name, + domainid=self.account2.domainid, + templatefilter=self.testdata["templatefilter"] + + ) + + self.assertEqual( + listtemplate, + None, + "Check templates are not listed" + ) + return