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

Reply via email to