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,
|
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)
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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"
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user