Merge "Improved coverage for glance.api.*"
This commit is contained in:
commit
1da9718f80
@ -53,6 +53,10 @@ class FakeCache(image_cache.ImageCache):
|
||||
def delete_cached_image(self, image_id):
|
||||
self.deleted_images.append(image_id)
|
||||
|
||||
def delete_all_cached_images(self):
|
||||
self.delete_cached_image(self.get_cached_images().get('id'))
|
||||
return 1
|
||||
|
||||
def get_queued_images(self):
|
||||
return {'test': 'passed'}
|
||||
|
||||
@ -62,6 +66,10 @@ class FakeCache(image_cache.ImageCache):
|
||||
def delete_queued_image(self, image_id):
|
||||
self.deleted_images.append(image_id)
|
||||
|
||||
def delete_all_queued_images(self):
|
||||
self.delete_queued_image('deleted_img')
|
||||
return 1
|
||||
|
||||
|
||||
class FakeController(cached_images.Controller):
|
||||
def __init__(self):
|
||||
@ -87,12 +95,29 @@ class TestCachedImages(testtools.TestCase):
|
||||
result = self.controller.get_cached_images(req)
|
||||
self.assertEqual({'cached_images': {'id': 'test'}}, result)
|
||||
|
||||
def test_delete_cached_images(self):
|
||||
def test_delete_cached_image(self):
|
||||
req = webob.Request.blank('')
|
||||
req.context = 'test'
|
||||
self.controller.delete_cached_image(req, image_id='test')
|
||||
self.assertEqual(['test'], self.controller.cache.deleted_images)
|
||||
|
||||
def test_delete_cached_images(self):
|
||||
req = webob.Request.blank('')
|
||||
req.context = 'test'
|
||||
self.assertEqual({'num_deleted': 1},
|
||||
self.controller.delete_cached_images(req))
|
||||
self.assertEqual(['test'], self.controller.cache.deleted_images)
|
||||
|
||||
def test_policy_enforce_forbidden(self):
|
||||
def fake_enforce(context, action, target):
|
||||
raise exception.Forbidden()
|
||||
|
||||
self.controller.policy.enforce = fake_enforce
|
||||
req = webob.Request.blank('')
|
||||
req.context = 'test'
|
||||
self.assertRaises(webob.exc.HTTPForbidden,
|
||||
self.controller.get_cached_images, req)
|
||||
|
||||
def test_get_queued_images(self):
|
||||
req = webob.Request.blank('')
|
||||
req.context = 'test'
|
||||
@ -110,3 +135,11 @@ class TestCachedImages(testtools.TestCase):
|
||||
self.controller.delete_queued_image(req, 'deleted_img')
|
||||
self.assertEqual(['deleted_img'],
|
||||
self.controller.cache.deleted_images)
|
||||
|
||||
def test_delete_queued_images(self):
|
||||
req = webob.Request.blank('')
|
||||
req.context = 'test'
|
||||
self.assertEqual({'num_deleted': 1},
|
||||
self.controller.delete_queued_images(req))
|
||||
self.assertEqual(['deleted_img'],
|
||||
self.controller.cache.deleted_images)
|
||||
|
@ -194,6 +194,21 @@ class TestImagesController(base.StoreClearingUnitTest):
|
||||
request, str(uuid.uuid4()), 'ABC', 3)
|
||||
self.assertTrue(image.delete.called)
|
||||
|
||||
def test_upload_non_existent_image_raises_not_found_exception(self):
|
||||
def fake_save(self):
|
||||
raise exception.NotFound()
|
||||
|
||||
def fake_delete():
|
||||
raise exception.NotFound()
|
||||
|
||||
request = unit_test_utils.get_fake_request()
|
||||
image = FakeImage('abcd', locations=['http://example.com/image'])
|
||||
self.image_repo.result = image
|
||||
self.image_repo.save = fake_save
|
||||
image.delete = fake_delete
|
||||
self.assertRaises(webob.exc.HTTPGone, self.controller.upload,
|
||||
request, str(uuid.uuid4()), 'ABC', 3)
|
||||
|
||||
def test_upload_non_existent_image_before_save(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.image_repo.result = exception.NotFound()
|
||||
@ -228,6 +243,13 @@ class TestImagesController(base.StoreClearingUnitTest):
|
||||
self.controller.upload,
|
||||
request, unit_test_utils.UUID1, 'YYYYYYY', 7)
|
||||
|
||||
def test_upload_storage_quota_full(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.image_repo.result = exception.StorageQuotaFull("message")
|
||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||
self.controller.upload,
|
||||
request, unit_test_utils.UUID1, 'YYYYYYY', 7)
|
||||
|
||||
def test_upload_storage_forbidden(self):
|
||||
request = unit_test_utils.get_fake_request(user=unit_test_utils.USER2)
|
||||
image = FakeImage()
|
||||
@ -236,6 +258,13 @@ class TestImagesController(base.StoreClearingUnitTest):
|
||||
self.assertRaises(webob.exc.HTTPForbidden, self.controller.upload,
|
||||
request, unit_test_utils.UUID2, 'YY', 2)
|
||||
|
||||
def test_upload_storage_internal_error(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.image_repo.result = exception.ServerError()
|
||||
self.assertRaises(exception.ServerError,
|
||||
self.controller.upload,
|
||||
request, unit_test_utils.UUID1, 'ABC', 3)
|
||||
|
||||
def test_upload_storage_write_denied(self):
|
||||
request = unit_test_utils.get_fake_request(user=unit_test_utils.USER3)
|
||||
image = FakeImage()
|
||||
|
@ -308,6 +308,11 @@ class TestImageMembersController(test_utils.BaseTestCase):
|
||||
self.assertRaises(webob.exc.HTTPForbidden, self.controller.update,
|
||||
request, UUID2, TENANT4, status='accepted')
|
||||
|
||||
def test_update_non_existent_image(self):
|
||||
request = unit_test_utils.get_fake_request(tenant=TENANT1)
|
||||
self.assertRaises(webob.exc.HTTPNotFound, self.controller.update,
|
||||
request, '123', TENANT4, status='accepted')
|
||||
|
||||
def test_update_invalid_status(self):
|
||||
request = unit_test_utils.get_fake_request(tenant=TENANT4)
|
||||
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
|
||||
|
@ -16,8 +16,10 @@
|
||||
import webob
|
||||
|
||||
import glance.api.v2.image_tags
|
||||
from glance.common import exception
|
||||
from glance.tests.unit import base
|
||||
import glance.tests.unit.utils as unit_test_utils
|
||||
import glance.tests.unit.v2.test_image_data_resource as image_data_tests
|
||||
import glance.tests.utils as test_utils
|
||||
|
||||
|
||||
@ -50,6 +52,26 @@ class TestImageTagsController(base.IsolatedUnitTest):
|
||||
tags = self.db.image_tag_get_all(context, unit_test_utils.UUID1)
|
||||
self.assertEqual(1, len([tag for tag in tags if tag == 'dink']))
|
||||
|
||||
def test_update_tag_of_non_existing_image(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.assertRaises(webob.exc.HTTPNotFound, self.controller.update,
|
||||
request, "abcd", "dink")
|
||||
|
||||
def test_delete_tag_forbidden(self):
|
||||
def fake_get(self):
|
||||
raise exception.Forbidden()
|
||||
|
||||
image_repo = image_data_tests.FakeImageRepo()
|
||||
image_repo.get = fake_get
|
||||
|
||||
def get_fake_repo(self):
|
||||
return image_repo
|
||||
|
||||
self.controller.gateway.get_repo = get_fake_repo
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.assertRaises(webob.exc.HTTPForbidden, self.controller.update,
|
||||
request, unit_test_utils.UUID1, "ping")
|
||||
|
||||
def test_delete_tag(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.controller.delete(request, unit_test_utils.UUID1, 'ping')
|
||||
@ -59,6 +81,11 @@ class TestImageTagsController(base.IsolatedUnitTest):
|
||||
self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete,
|
||||
request, unit_test_utils.UUID1, 'what')
|
||||
|
||||
def test_delete_tag_of_non_existing_image(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
self.assertRaises(webob.exc.HTTPNotFound, self.controller.delete,
|
||||
request, "abcd", "dink")
|
||||
|
||||
|
||||
class TestImagesSerializer(test_utils.BaseTestCase):
|
||||
|
||||
|
@ -663,6 +663,14 @@ class TestImagesController(base.IsolatedUnitTest):
|
||||
request, image={}, extra_properties={},
|
||||
tags=tags)
|
||||
|
||||
def test_create_with_duplicate_location(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
location = {'url': '%s/fake_location' % BASE_URI, 'metadata': {}}
|
||||
image = {'name': 'image-1', 'locations': [location, location]}
|
||||
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.create,
|
||||
request, image=image, extra_properties={},
|
||||
tags=[])
|
||||
|
||||
def test_update_no_changes(self):
|
||||
request = unit_test_utils.get_fake_request()
|
||||
output = self.controller.update(request, UUID1, changes=[])
|
||||
@ -698,6 +706,16 @@ class TestImagesController(base.IsolatedUnitTest):
|
||||
self.assertRaises(webob.exc.HTTPNotFound, self.controller.update,
|
||||
request, UUID1, changes=[])
|
||||
|
||||
def test_update_with_too_many_properties(self):
|
||||
self.config(user_storage_quota='1')
|
||||
new_location = {'url': '%s/fake_location' % BASE_URI, 'metadata': {}}
|
||||
request = unit_test_utils.get_fake_request()
|
||||
changes = [{'op': 'add', 'path': ['locations', '-'],
|
||||
'value': new_location}]
|
||||
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
|
||||
self.controller.update,
|
||||
request, UUID1, changes=changes)
|
||||
|
||||
def test_update_replace_base_attribute(self):
|
||||
self.db.image_update(None, UUID1, {'properties': {'foo': 'bar'}})
|
||||
request = unit_test_utils.get_fake_request()
|
||||
|
@ -44,3 +44,18 @@ class TestSchemasController(test_utils.BaseTestCase):
|
||||
expected = set(['{schema}', '{first}', '{next}'])
|
||||
actual = set([link['href'] for link in output['links']])
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
def test_member(self):
|
||||
req = unit_test_utils.get_fake_request()
|
||||
output = self.controller.member(req)
|
||||
self.assertEqual(output['name'], 'member')
|
||||
expected = set(['status', 'created_at', 'updated_at', 'image_id',
|
||||
'member_id', 'schema'])
|
||||
self.assertEqual(expected, set(output['properties'].keys()))
|
||||
|
||||
def test_members(self):
|
||||
req = unit_test_utils.get_fake_request()
|
||||
output = self.controller.members(req)
|
||||
self.assertEqual(output['name'], 'members')
|
||||
expected = set(['schema', 'members'])
|
||||
self.assertEqual(expected, set(output['properties'].keys()))
|
||||
|
Loading…
x
Reference in New Issue
Block a user