Merge "Extend images CLI v2 with new sorting syntax"

This commit is contained in:
Jenkins
2015-03-16 20:12:42 +00:00
committed by Gerrit Code Review
4 changed files with 139 additions and 21 deletions
+48
View File
@@ -473,6 +473,22 @@ data_fixtures = {
]},
),
},
'/v2/images?limit=%d&sort=name%%3Adesc%%2Csize%%3Aasc'
% images.DEFAULT_PAGE_SIZE: {
'GET': (
{},
{'images': [
{
'id': '6f99bf80-2ee6-47cf-acfe-1f1fabb7e810',
'name': 'image-2',
},
{
'id': '2a4560b2-e585-443e-9b39-553b46ec92d1',
'name': 'image-1',
},
]},
),
},
}
schema_fixtures = {
@@ -679,6 +695,13 @@ class TestController(testtools.TestCase):
self.assertEqual(2, len(images))
self.assertEqual('%s' % img_id1, images[1].id)
def test_list_images_with_new_sorting_syntax(self):
img_id1 = '2a4560b2-e585-443e-9b39-553b46ec92d1'
sort = 'name:desc,size:asc'
images = list(self.controller.list(sort=sort))
self.assertEqual(2, len(images))
self.assertEqual('%s' % img_id1, images[1].id)
def test_list_images_sort_dirs_fewer_than_keys(self):
sort_key = ['name', 'id', 'created_at']
sort_dir = ['desc', 'asc']
@@ -688,6 +711,31 @@ class TestController(testtools.TestCase):
sort_key=sort_key,
sort_dir=sort_dir))
def test_list_images_combined_syntax(self):
sort_key = ['name', 'id']
sort_dir = ['desc', 'asc']
sort = 'name:asc'
self.assertRaises(exc.HTTPBadRequest,
list,
self.controller.list(
sort=sort,
sort_key=sort_key,
sort_dir=sort_dir))
def test_list_images_new_sorting_syntax_invalid_key(self):
sort = 'INVALID:asc'
self.assertRaises(exc.HTTPBadRequest,
list,
self.controller.list(
sort=sort))
def test_list_images_new_sorting_syntax_invalid_direction(self):
sort = 'name:INVALID'
self.assertRaises(exc.HTTPBadRequest,
list,
self.controller.list(
sort=sort))
def test_list_images_for_property(self):
filters = {'filters': dict([('os_distro', 'NixOS')])}
images = list(self.controller.list(**filters))
+39 -3
View File
@@ -70,7 +70,8 @@ class ShellV2Test(testtools.TestCase):
'tag': 'fake tag',
'properties': [],
'sort_key': ['name', 'id'],
'sort_dir': ['desc', 'asc']
'sort_dir': ['desc', 'asc'],
'sort': None
}
args = self._make_args(input)
with mock.patch.object(self.gc.images, 'list') as mocked_list:
@@ -102,7 +103,8 @@ class ShellV2Test(testtools.TestCase):
'tag': 'fake tag',
'properties': [],
'sort_key': ['name'],
'sort_dir': ['desc']
'sort_dir': ['desc'],
'sort': None
}
args = self._make_args(input)
with mock.patch.object(self.gc.images, 'list') as mocked_list:
@@ -123,6 +125,39 @@ class ShellV2Test(testtools.TestCase):
filters=exp_img_filters)
utils.print_list.assert_called_once_with({}, ['ID', 'Name'])
def test_do_image_list_new_sorting_syntax(self):
input = {
'limit': None,
'page_size': 18,
'visibility': True,
'member_status': 'Fake',
'owner': 'test',
'checksum': 'fake_checksum',
'tag': 'fake tag',
'properties': [],
'sort': 'name:desc,size:asc',
'sort_key': [],
'sort_dir': []
}
args = self._make_args(input)
with mock.patch.object(self.gc.images, 'list') as mocked_list:
mocked_list.return_value = {}
test_shell.do_image_list(self.gc, args)
exp_img_filters = {
'owner': 'test',
'member_status': 'Fake',
'visibility': True,
'checksum': 'fake_checksum',
'tag': 'fake tag'
}
mocked_list.assert_called_once_with(
page_size=18,
sort='name:desc,size:asc',
filters=exp_img_filters)
utils.print_list.assert_called_once_with({}, ['ID', 'Name'])
def test_do_image_list_with_property_filter(self):
input = {
'limit': None,
@@ -134,7 +169,8 @@ class ShellV2Test(testtools.TestCase):
'tag': 'fake tag',
'properties': ['os_distro=NixOS', 'architecture=x86_64'],
'sort_key': ['name'],
'sort_dir': ['desc']
'sort_dir': ['desc'],
'sort': None
}
args = self._make_args(input)
with mock.patch.object(self.gc.images, 'list') as mocked_list: