 61a40343fd
			
		
	
	61a40343fd
	
	
	
		
			
			* Hides previously broken --page-size option * Adds --property to image list for filtering on properties * Adds Visibility, Protected, Owner, Properties/Tags to --long output * Adds api.utils.simple_filter() for selecting matches out of a list of objects * Adds tests for all of the above * Updates image docs There are additional filtering options to be added in later reviews. Change-Id: I32feff0ad61aae749b33621c817658d7dc90c3aa Closes-bug: 1401902
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #   Licensed under the Apache License, Version 2.0 (the "License"); you may
 | |
| #   not use this file except in compliance with the License. You may obtain
 | |
| #   a copy of the License at
 | |
| #
 | |
| #        http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| #   Unless required by applicable law or agreed to in writing, software
 | |
| #   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | |
| #   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | |
| #   License for the specific language governing permissions and limitations
 | |
| #   under the License.
 | |
| #
 | |
| 
 | |
| """API Utilities Library Tests"""
 | |
| 
 | |
| import copy
 | |
| 
 | |
| from openstackclient.api import api
 | |
| from openstackclient.api import utils as api_utils
 | |
| from openstackclient.tests.api import fakes as api_fakes
 | |
| 
 | |
| 
 | |
| class TestBaseAPIFilter(api_fakes.TestSession):
 | |
|     """The filters can be tested independently"""
 | |
| 
 | |
|     def setUp(self):
 | |
|         super(TestBaseAPIFilter, self).setUp()
 | |
|         self.api = api.BaseAPI(
 | |
|             session=self.sess,
 | |
|             endpoint=self.BASE_URL,
 | |
|         )
 | |
| 
 | |
|         self.input_list = [
 | |
|             api_fakes.RESP_ITEM_1,
 | |
|             api_fakes.RESP_ITEM_2,
 | |
|             api_fakes.RESP_ITEM_3,
 | |
|         ]
 | |
| 
 | |
|     def test_simple_filter_none(self):
 | |
|         output = api_utils.simple_filter(
 | |
|         )
 | |
|         self.assertIsNone(output)
 | |
| 
 | |
|     def test_simple_filter_no_attr(self):
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|         )
 | |
|         self.assertEqual(self.input_list, output)
 | |
| 
 | |
|     def test_simple_filter_attr_only(self):
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='status',
 | |
|         )
 | |
|         self.assertEqual(self.input_list, output)
 | |
| 
 | |
|     def test_simple_filter_attr_value(self):
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='status',
 | |
|             value='',
 | |
|         )
 | |
|         self.assertEqual([], output)
 | |
| 
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='status',
 | |
|             value='UP',
 | |
|         )
 | |
|         self.assertEqual(
 | |
|             [api_fakes.RESP_ITEM_1, api_fakes.RESP_ITEM_3],
 | |
|             output,
 | |
|         )
 | |
| 
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='fred',
 | |
|             value='UP',
 | |
|         )
 | |
|         self.assertEqual([], output)
 | |
| 
 | |
|     def test_simple_filter_prop_attr_only(self):
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='b',
 | |
|             property_field='props',
 | |
|         )
 | |
|         self.assertEqual(self.input_list, output)
 | |
| 
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='status',
 | |
|             property_field='props',
 | |
|         )
 | |
|         self.assertEqual(self.input_list, output)
 | |
| 
 | |
|     def test_simple_filter_prop_attr_value(self):
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='b',
 | |
|             value=2,
 | |
|             property_field='props',
 | |
|         )
 | |
|         self.assertEqual(
 | |
|             [api_fakes.RESP_ITEM_1, api_fakes.RESP_ITEM_2],
 | |
|             output,
 | |
|         )
 | |
| 
 | |
|         output = api_utils.simple_filter(
 | |
|             copy.deepcopy(self.input_list),
 | |
|             attr='b',
 | |
|             value=9,
 | |
|             property_field='props',
 | |
|         )
 | |
|         self.assertEqual([], output)
 |