summaryrefslogtreecommitdiff
path: root/openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py')
-rw-r--r--openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py264
1 files changed, 0 insertions, 264 deletions
diff --git a/openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py b/openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py
deleted file mode 100644
index 585804cb..00000000
--- a/openstack_dashboard/dashboards/project/images_and_snapshots/images/tests.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2012 United States Government as represented by the
-# Administrator of the National Aeronautics and Space Administration.
-# All Rights Reserved.
-#
-# Copyright 2012 Nebula, Inc.
-#
-# Licensed 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.
-
-import tempfile
-
-from django.conf import settings
-from django.core.files.uploadedfile import InMemoryUploadedFile
-from django.core.urlresolvers import reverse
-from django.forms.widgets import HiddenInput
-from django import http
-from django.test.utils import override_settings
-
-from mox import IsA
-
-from horizon import tables as horizon_tables
-from openstack_dashboard import api
-from openstack_dashboard.test import helpers as test
-
-from openstack_dashboard.dashboards.project.images_and_snapshots.images.forms \
- import CreateImageForm
-from openstack_dashboard.dashboards.project.images_and_snapshots.images \
- import tables
-
-
-IMAGES_INDEX_URL = reverse('horizon:project:images_and_snapshots:index')
-
-
-class CreateImageFormTests(test.TestCase):
- def test_no_location_or_file(self):
- """
- The form will not be valid if both copy_from and image_file are not
- provided.
- """
- post = {
- 'name': u'Ubuntu 11.10',
- 'source_type': u'file',
- 'description': u'Login with admin/admin',
- 'disk_format': u'qcow2',
- 'minimum_disk': 15,
- 'minimum_ram': 512,
- 'is_public': 1}
- files = {}
- form = CreateImageForm(post, files)
- self.assertEqual(form.is_valid(), False)
-
- @override_settings(HORIZON_IMAGES_ALLOW_UPLOAD=False)
- def test_image_upload_disabled(self):
- """
- If HORIZON_IMAGES_ALLOW_UPLOAD is false, the image_file field widget
- will be a HiddenInput widget instead of a FileInput widget.
- """
- form = CreateImageForm({})
- self.assertEqual(
- isinstance(form.fields['image_file'].widget, HiddenInput), True)
-
-
-class ImageViewTests(test.TestCase):
- def test_image_create_get(self):
- url = reverse('horizon:project:images_and_snapshots:images:create')
- res = self.client.get(url)
- self.assertTemplateUsed(res,
- 'project/images_and_snapshots/images/create.html')
-
- @test.create_stubs({api.glance: ('image_create',)})
- def test_image_create_post_copy_from(self):
- data = {
- 'name': u'Ubuntu 11.10',
- 'description': u'Login with admin/admin',
- 'source_type': u'url',
- 'copy_from': u'http://cloud-images.ubuntu.com/releases/'
- u'oneiric/release/ubuntu-11.10-server-cloudimg'
- u'-amd64-disk1.img',
- 'disk_format': u'qcow2',
- 'minimum_disk': 15,
- 'minimum_ram': 512,
- 'is_public': True,
- 'protected': False,
- 'method': 'CreateImageForm'}
-
- api.glance.image_create(IsA(http.HttpRequest),
- container_format="bare",
- copy_from=data['copy_from'],
- disk_format=data['disk_format'],
- is_public=True,
- protected=False,
- min_disk=data['minimum_disk'],
- min_ram=data['minimum_ram'],
- properties={
- 'description': data['description']},
- name=data['name']). \
- AndReturn(self.images.first())
- self.mox.ReplayAll()
-
- url = reverse('horizon:project:images_and_snapshots:images:create')
- res = self.client.post(url, data)
-
- self.assertNoFormErrors(res)
- self.assertEqual(res.status_code, 302)
-
- @test.create_stubs({api.glance: ('image_create',)})
- def test_image_create_post_upload(self):
- temp_file = tempfile.TemporaryFile()
- temp_file.write('123')
- temp_file.flush()
- temp_file.seek(0)
- data = {
- 'name': u'Test Image',
- 'description': u'Login with admin/admin',
- 'source_type': u'file',
- 'image_file': temp_file,
- 'disk_format': u'qcow2',
- 'minimum_disk': 15,
- 'minimum_ram': 512,
- 'is_public': True,
- 'protected': False,
- 'method': 'CreateImageForm'}
-
- api.glance.image_create(IsA(http.HttpRequest),
- container_format="bare",
- disk_format=data['disk_format'],
- is_public=True,
- protected=False,
- min_disk=data['minimum_disk'],
- min_ram=data['minimum_ram'],
- properties={
- 'description': data['description']},
- name=data['name'],
- data=IsA(InMemoryUploadedFile)). \
- AndReturn(self.images.first())
- self.mox.ReplayAll()
-
- url = reverse('horizon:project:images_and_snapshots:images:create')
- res = self.client.post(url, data)
-
- self.assertNoFormErrors(res)
- self.assertEqual(res.status_code, 302)
-
- @test.create_stubs({api.glance: ('image_get',)})
- def test_image_detail_get(self):
- image = self.images.first()
-
- api.glance.image_get(IsA(http.HttpRequest), str(image.id)) \
- .AndReturn(self.images.first())
- self.mox.ReplayAll()
-
- res = self.client.get(
- reverse('horizon:project:images_and_snapshots:images:detail',
- args=[image.id]))
- self.assertTemplateUsed(res,
- 'project/images_and_snapshots/images/detail.html')
- self.assertEqual(res.context['image'].name, image.name)
- self.assertEqual(res.context['image'].protected, image.protected)
-
- @test.create_stubs({api.glance: ('image_get',)})
- def test_protected_image_detail_get(self):
- image = self.images.list()[2]
-
- api.glance.image_get(IsA(http.HttpRequest), str(image.id)) \
- .AndReturn(image)
- self.mox.ReplayAll()
-
- res = self.client.get(
- reverse('horizon:project:images_and_snapshots:images:detail',
- args=[image.id]))
- self.assertTemplateUsed(res,
- 'project/images_and_snapshots/images/detail.html')
- self.assertEqual(res.context['image'].protected, image.protected)
-
- @test.create_stubs({api.glance: ('image_get',)})
- def test_image_detail_get_with_exception(self):
- image = self.images.first()
-
- api.glance.image_get(IsA(http.HttpRequest), str(image.id)) \
- .AndRaise(self.exceptions.glance)
- self.mox.ReplayAll()
-
- url = reverse('horizon:project:images_and_snapshots:images:detail',
- args=[image.id])
- res = self.client.get(url)
- self.assertRedirectsNoFollow(res, IMAGES_INDEX_URL)
-
- @test.create_stubs({api.glance: ('image_get',)})
- def test_image_update_get(self):
- image = self.images.first()
- image.disk_format = "ami"
- image.is_public = True
- api.glance.image_get(IsA(http.HttpRequest), str(image.id)) \
- .AndReturn(image)
- self.mox.ReplayAll()
-
- res = self.client.get(
- reverse('horizon:project:images_and_snapshots:images:update',
- args=[image.id]))
-
- self.assertTemplateUsed(res,
- 'project/images_and_snapshots/images/_update.html')
- self.assertEqual(res.context['image'].name, image.name)
- # Bug 1076216 - is_public checkbox not being set correctly
- self.assertContains(res, "<input type='checkbox' id='id_public'"
- " name='public' checked='checked'>",
- html=True,
- msg_prefix="The is_public checkbox is not checked")
-
-
-class OwnerFilterTests(test.TestCase):
- def setUp(self):
- super(OwnerFilterTests, self).setUp()
- self.table = self.mox.CreateMock(horizon_tables.DataTable)
- self.table.request = self.request
-
- @override_settings(IMAGES_LIST_FILTER_TENANTS=[{'name': 'Official',
- 'tenant': 'officialtenant',
- 'icon': 'icon-ok'}])
- def test_filter(self):
- self.mox.ReplayAll()
- all_images = self.images.list()
- table = self.table
- self.filter_tenants = settings.IMAGES_LIST_FILTER_TENANTS
-
- filter_ = tables.OwnerFilter()
-
- images = filter_.filter(table, all_images, 'project')
- self.assertEqual(images, self._expected('project'))
-
- images = filter_.filter(table, all_images, 'public')
- self.assertEqual(images, self._expected('public'))
-
- images = filter_.filter(table, all_images, 'shared')
- self.assertEqual(images, self._expected('shared'))
-
- images = filter_.filter(table, all_images, 'officialtenant')
- self.assertEqual(images, self._expected('officialtenant'))
-
- def _expected(self, filter_string):
- my_tenant_id = self.request.user.tenant_id
- images = self.images.list()
- special = map(lambda t: t['tenant'], self.filter_tenants)
-
- if filter_string == 'public':
- return filter(lambda im: im.is_public, images)
- if filter_string == 'shared':
- return filter(lambda im: not im.is_public and
- im.owner != my_tenant_id and
- im.owner not in special, images)
- if filter_string == 'project':
- filter_string = my_tenant_id
- return filter(lambda im: im.owner == filter_string, images)