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:
parent
28f65e6650
commit
47791a1639
@ -361,14 +361,14 @@ class TestServerImageCreate(TestServer):
|
||||
compute_fakes.server_name,
|
||||
)
|
||||
|
||||
collist = ('id', 'is_public', 'name', 'owner', 'protected')
|
||||
collist = ('id', 'name', 'owner', 'protected', 'visibility')
|
||||
self.assertEqual(collist, columns)
|
||||
datalist = (
|
||||
image_fakes.image_id,
|
||||
image_fakes.image_public,
|
||||
image_fakes.image_name,
|
||||
image_fakes.image_owner,
|
||||
image_fakes.image_protected,
|
||||
image_fakes.image_visibility,
|
||||
)
|
||||
self.assertEqual(datalist, data)
|
||||
|
||||
@ -392,14 +392,14 @@ class TestServerImageCreate(TestServer):
|
||||
'img-nam',
|
||||
)
|
||||
|
||||
collist = ('id', 'is_public', 'name', 'owner', 'protected')
|
||||
collist = ('id', 'name', 'owner', 'protected', 'visibility')
|
||||
self.assertEqual(collist, columns)
|
||||
datalist = (
|
||||
image_fakes.image_id,
|
||||
image_fakes.image_public,
|
||||
image_fakes.image_name,
|
||||
image_fakes.image_owner,
|
||||
image_fakes.image_protected,
|
||||
image_fakes.image_visibility,
|
||||
)
|
||||
self.assertEqual(datalist, data)
|
||||
|
||||
|
@ -659,3 +659,36 @@ class TestImageSet(TestImage):
|
||||
image_fakes.image_id,
|
||||
**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)
|
||||
|
@ -19,18 +19,105 @@ from openstackclient.tests import fakes
|
||||
from openstackclient.tests import utils
|
||||
|
||||
|
||||
image_id = 'im1'
|
||||
image_id = '0f41529e-7c12-4de8-be2d-181abb825b3c'
|
||||
image_name = 'graven'
|
||||
image_owner = 'baal'
|
||||
image_public = False
|
||||
image_protected = False
|
||||
image_visibility = 'public'
|
||||
|
||||
IMAGE = {
|
||||
'id': image_id,
|
||||
'name': image_name,
|
||||
'is_public': image_public,
|
||||
'owner': image_owner,
|
||||
'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"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -16,6 +16,9 @@
|
||||
import copy
|
||||
import mock
|
||||
|
||||
import warlock
|
||||
|
||||
from glanceclient.v2 import schemas
|
||||
from openstackclient.image.v2 import image
|
||||
from openstackclient.tests import fakes
|
||||
from openstackclient.tests.image.v2 import fakes as image_fakes
|
||||
@ -223,7 +226,7 @@ class TestImageList(TestImage):
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'public',
|
||||
False,
|
||||
image_fakes.image_owner,
|
||||
'',
|
||||
@ -293,3 +296,38 @@ class TestImageList(TestImage):
|
||||
image_fakes.image_name
|
||||
), )
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user