Add image show tests

Image v2 uses warlock objects rather than the usua Resource objects
so we need to test for those.  This adds a subset of the Image v2
schema that should be enough to test for proper warlock image handling.

Depends-On: Ic95db2f63d9f5f37e29f0d7e048397da311fbf8c
Change-Id: Ib89cce87f110a554f40e726718e31d39b500a6ae
This commit is contained in:
Dean Troyer 2015-05-01 09:38:04 -05:00
parent 28f65e6650
commit 47791a1639
4 changed files with 166 additions and 8 deletions

View File

@ -361,14 +361,14 @@ class TestServerImageCreate(TestServer):
compute_fakes.server_name, compute_fakes.server_name,
) )
collist = ('id', 'is_public', 'name', 'owner', 'protected') collist = ('id', 'name', 'owner', 'protected', 'visibility')
self.assertEqual(collist, columns) self.assertEqual(collist, columns)
datalist = ( datalist = (
image_fakes.image_id, image_fakes.image_id,
image_fakes.image_public,
image_fakes.image_name, image_fakes.image_name,
image_fakes.image_owner, image_fakes.image_owner,
image_fakes.image_protected, image_fakes.image_protected,
image_fakes.image_visibility,
) )
self.assertEqual(datalist, data) self.assertEqual(datalist, data)
@ -392,14 +392,14 @@ class TestServerImageCreate(TestServer):
'img-nam', 'img-nam',
) )
collist = ('id', 'is_public', 'name', 'owner', 'protected') collist = ('id', 'name', 'owner', 'protected', 'visibility')
self.assertEqual(collist, columns) self.assertEqual(collist, columns)
datalist = ( datalist = (
image_fakes.image_id, image_fakes.image_id,
image_fakes.image_public,
image_fakes.image_name, image_fakes.image_name,
image_fakes.image_owner, image_fakes.image_owner,
image_fakes.image_protected, image_fakes.image_protected,
image_fakes.image_visibility,
) )
self.assertEqual(datalist, data) self.assertEqual(datalist, data)

View File

@ -659,3 +659,36 @@ class TestImageSet(TestImage):
image_fakes.image_id, image_fakes.image_id,
**kwargs **kwargs
) )
class TestImageShow(TestImage):
def setUp(self):
super(TestImageShow, self).setUp()
self.images_mock.get.return_value = fakes.FakeResource(
None,
copy.deepcopy(image_fakes.IMAGE),
loaded=True,
)
# Get the command object to test
self.cmd = image.ShowImage(self.app, None)
def test_image_show(self):
arglist = [
image_fakes.image_id,
]
verifylist = [
('image', image_fakes.image_id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# DisplayCommandBase.take_action() returns two tuples
columns, data = self.cmd.take_action(parsed_args)
self.images_mock.get.assert_called_with(
image_fakes.image_id,
)
self.assertEqual(image_fakes.IMAGE_columns, columns)
self.assertEqual(image_fakes.IMAGE_data, data)

View File

@ -19,18 +19,105 @@ from openstackclient.tests import fakes
from openstackclient.tests import utils from openstackclient.tests import utils
image_id = 'im1' image_id = '0f41529e-7c12-4de8-be2d-181abb825b3c'
image_name = 'graven' image_name = 'graven'
image_owner = 'baal' image_owner = 'baal'
image_public = False
image_protected = False image_protected = False
image_visibility = 'public'
IMAGE = { IMAGE = {
'id': image_id, 'id': image_id,
'name': image_name, 'name': image_name,
'is_public': image_public,
'owner': image_owner, 'owner': image_owner,
'protected': image_protected, 'protected': image_protected,
'visibility': image_visibility,
}
IMAGE_columns = tuple(sorted(IMAGE))
IMAGE_data = tuple((IMAGE[x] for x in sorted(IMAGE)))
# Just enough v2 schema to do some testing
IMAGE_schema = {
"additionalProperties": {
"type": "string"
},
"name": "image",
"links": [
{
"href": "{self}",
"rel": "self"
},
{
"href": "{file}",
"rel": "enclosure"
},
{
"href": "{schema}",
"rel": "describedby"
}
],
"properties": {
"id": {
"pattern": "^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$", # noqa
"type": "string",
"description": "An identifier for the image"
},
"name": {
"type": [
"null",
"string"
],
"description": "Descriptive name for the image",
"maxLength": 255
},
"owner": {
"type": [
"null",
"string"
],
"description": "Owner of the image",
"maxLength": 255
},
"protected": {
"type": "boolean",
"description": "If true, image will not be deletable."
},
"self": {
"type": "string",
"description": "(READ-ONLY)"
},
"schema": {
"type": "string",
"description": "(READ-ONLY)"
},
"size": {
"type": [
"null",
"integer"
],
"description": "Size of image file in bytes (READ-ONLY)"
},
"status": {
"enum": [
"queued",
"saving",
"active",
"killed",
"deleted",
"pending_delete"
],
"type": "string",
"description": "Status of the image (READ-ONLY)"
},
"visibility": {
"enum": [
"public",
"private"
],
"type": "string",
"description": "Scope of image accessibility"
},
}
} }

View File

@ -16,6 +16,9 @@
import copy import copy
import mock import mock
import warlock
from glanceclient.v2 import schemas
from openstackclient.image.v2 import image from openstackclient.image.v2 import image
from openstackclient.tests import fakes from openstackclient.tests import fakes
from openstackclient.tests.image.v2 import fakes as image_fakes from openstackclient.tests.image.v2 import fakes as image_fakes
@ -223,7 +226,7 @@ class TestImageList(TestImage):
'', '',
'', '',
'', '',
'', 'public',
False, False,
image_fakes.image_owner, image_fakes.image_owner,
'', '',
@ -293,3 +296,38 @@ class TestImageList(TestImage):
image_fakes.image_name image_fakes.image_name
), ) ), )
self.assertEqual(datalist, tuple(data)) self.assertEqual(datalist, tuple(data))
class TestImageShow(TestImage):
def setUp(self):
super(TestImageShow, self).setUp()
# Set up the schema
self.model = warlock.model_factory(
image_fakes.IMAGE_schema,
schemas.SchemaBasedModel,
)
self.images_mock.get.return_value = self.model(**image_fakes.IMAGE)
# Get the command object to test
self.cmd = image.ShowImage(self.app, None)
def test_image_show(self):
arglist = [
image_fakes.image_id,
]
verifylist = [
('image', image_fakes.image_id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# DisplayCommandBase.take_action() returns two tuples
columns, data = self.cmd.take_action(parsed_args)
self.images_mock.get.assert_called_with(
image_fakes.image_id,
)
self.assertEqual(image_fakes.IMAGE_columns, columns)
self.assertEqual(image_fakes.IMAGE_data, data)