1010# License for the specific language governing permissions and limitations
1111# under the License.
1212
13+ from unittest import mock
14+
1315from cinderclient import api_versions
16+ from openstack import utils as sdk_utils
17+ from osc_lib .cli import format_columns
1418from osc_lib import exceptions
1519
1620from openstackclient .tests .unit .volume .v3 import fakes as volume_fakes
@@ -21,9 +25,22 @@ class TestBlockStorageResourceFilter(volume_fakes.TestVolume):
2125 def setUp (self ):
2226 super ().setUp ()
2327
24- # Get a shortcut to the ResourceFilterManager Mock
25- self .resource_filter_mock = self .volume_client .resource_filters
26- self .resource_filter_mock .reset_mock ()
28+ patcher = mock .patch .object (
29+ sdk_utils , 'supports_microversion' , return_value = True
30+ )
31+ self .addCleanup (patcher .stop )
32+ self .supports_microversion_mock = patcher .start ()
33+ self ._set_mock_microversion (
34+ self .app .client_manager .volume .api_version .get_string ()
35+ )
36+
37+ def _set_mock_microversion (self , mock_v ):
38+ """Set a specific microversion for the mock supports_microversion()."""
39+ self .supports_microversion_mock .reset_mock (return_value = True )
40+ self .supports_microversion_mock .side_effect = (
41+ lambda _ , v : api_versions .APIVersion (v )
42+ <= api_versions .APIVersion (mock_v )
43+ )
2744
2845
2946class TestBlockStorageResourceFilterList (TestBlockStorageResourceFilter ):
@@ -33,7 +50,7 @@ class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
3350 def setUp (self ):
3451 super ().setUp ()
3552
36- self .resource_filter_mock . list .return_value = (
53+ self .volume_sdk_client . resource_filters .return_value = (
3754 self .fake_resource_filters
3855 )
3956
@@ -45,7 +62,7 @@ def setUp(self):
4562 )
4663
4764 def test_resource_filter_list (self ):
48- self .volume_client . api_version = api_versions . APIVersion ('3.33' )
65+ self ._set_mock_microversion ('3.33' )
4966
5067 arglist = []
5168 verifylist = []
@@ -55,7 +72,7 @@ def test_resource_filter_list(self):
5572 expected_data = tuple (
5673 (
5774 resource_filter .resource ,
58- resource_filter .filters ,
75+ format_columns . ListColumn ( resource_filter .filters ) ,
5976 )
6077 for resource_filter in self .fake_resource_filters
6178 )
@@ -65,10 +82,10 @@ def test_resource_filter_list(self):
6582 self .assertEqual (expected_data , tuple (data ))
6683
6784 # checking if proper call was made to list clusters
68- self .resource_filter_mock . list .assert_called_with ()
85+ self .volume_sdk_client . resource_filters .assert_called_with ()
6986
7087 def test_resource_filter_list_pre_v333 (self ):
71- self .volume_client . api_version = api_versions . APIVersion ('3.32' )
88+ self ._set_mock_microversion ('3.32' )
7289
7390 arglist = []
7491 verifylist = []
@@ -89,7 +106,7 @@ class TestBlockStorageResourceFilterShow(TestBlockStorageResourceFilter):
89106 def setUp (self ):
90107 super ().setUp ()
91108
92- self .resource_filter_mock . list .return_value = iter (
109+ self .volume_sdk_client . resource_filters .return_value = iter (
93110 [self .fake_resource_filter ]
94111 )
95112
@@ -101,7 +118,7 @@ def setUp(self):
101118 )
102119
103120 def test_resource_filter_show (self ):
104- self .volume_client . api_version = api_versions . APIVersion ('3.33' )
121+ self ._set_mock_microversion ('3.33' )
105122
106123 arglist = [
107124 self .fake_resource_filter .resource ,
@@ -111,21 +128,23 @@ def test_resource_filter_show(self):
111128 ]
112129 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
113130
114- expected_columns = ('filters ' , 'resource ' )
131+ expected_columns = ('Resource ' , 'Filters ' )
115132 expected_data = (
116- self .fake_resource_filter .filters ,
117133 self .fake_resource_filter .resource ,
134+ format_columns .ListColumn (self .fake_resource_filter .filters ),
118135 )
119136 columns , data = self .cmd .take_action (parsed_args )
120137
121138 self .assertEqual (expected_columns , columns )
122139 self .assertEqual (expected_data , data )
123140
124141 # checking if proper call was made to list clusters
125- self .resource_filter_mock .list .assert_called_with (resource = 'volume' )
142+ self .volume_sdk_client .resource_filters .assert_called_with (
143+ resource = 'volume'
144+ )
126145
127146 def test_resource_filter_show_pre_v333 (self ):
128- self .volume_client . api_version = api_versions . APIVersion ('3.32' )
147+ self ._set_mock_microversion ('3.32' )
129148
130149 arglist = [
131150 self .fake_resource_filter .resource ,
0 commit comments