1313# under the License.
1414#
1515
16+ from keystoneclient import exceptions as identity_exc
17+ from osc_lib import exceptions
18+
1619from openstackclient .identity .v2_0 import service
1720from openstackclient .tests .identity .v2_0 import fakes as identity_fakes
1821
@@ -170,7 +173,8 @@ class TestServiceDelete(TestService):
170173 def setUp (self ):
171174 super (TestServiceDelete , self ).setUp ()
172175
173- self .services_mock .get .return_value = self .fake_service
176+ self .services_mock .get .side_effect = identity_exc .NotFound (None )
177+ self .services_mock .find .return_value = self .fake_service
174178 self .services_mock .delete .return_value = None
175179
176180 # Get the command object to test
@@ -253,20 +257,23 @@ def test_service_list_long(self):
253257
254258class TestServiceShow (TestService ):
255259
260+ fake_service_s = identity_fakes .FakeService .create_one_service ()
261+
256262 def setUp (self ):
257263 super (TestServiceShow , self ).setUp ()
258264
259- self .services_mock .get .return_value = self .fake_service
265+ self .services_mock .get .side_effect = identity_exc .NotFound (None )
266+ self .services_mock .find .return_value = self .fake_service_s
260267
261268 # Get the command object to test
262269 self .cmd = service .ShowService (self .app , None )
263270
264271 def test_service_show (self ):
265272 arglist = [
266- self .fake_service .name ,
273+ self .fake_service_s .name ,
267274 ]
268275 verifylist = [
269- ('service' , self .fake_service .name ),
276+ ('service' , self .fake_service_s .name ),
270277 ]
271278 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
272279
@@ -275,17 +282,35 @@ def test_service_show(self):
275282 # data to be shown.
276283 columns , data = self .cmd .take_action (parsed_args )
277284
278- # ServiceManager.get (id)
279- self .services_mock .get .assert_called_with (
280- self .fake_service .name ,
285+ # ServiceManager.find (id)
286+ self .services_mock .find .assert_called_with (
287+ name = self .fake_service_s .name ,
281288 )
282289
283290 collist = ('description' , 'id' , 'name' , 'type' )
284291 self .assertEqual (collist , columns )
285292 datalist = (
286- self .fake_service .description ,
287- self .fake_service .id ,
288- self .fake_service .name ,
289- self .fake_service .type ,
293+ self .fake_service_s .description ,
294+ self .fake_service_s .id ,
295+ self .fake_service_s .name ,
296+ self .fake_service_s .type ,
290297 )
291298 self .assertEqual (datalist , data )
299+
300+ def test_service_show_nounique (self ):
301+ self .services_mock .find .side_effect = identity_exc .NoUniqueMatch (None )
302+ arglist = [
303+ 'nounique_service' ,
304+ ]
305+ verifylist = [
306+ ('service' , 'nounique_service' ),
307+ ]
308+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
309+
310+ try :
311+ self .cmd .take_action (parsed_args )
312+ self .fail ('CommandError should be raised.' )
313+ except exceptions .CommandError as e :
314+ self .assertEqual (
315+ "Multiple service matches found for 'nounique_service',"
316+ " use an ID to be more specific." , str (e ))
0 commit comments