@@ -121,6 +121,7 @@ def setUp(self):
121121 self .network .find_network = mock .Mock (return_value = fake_net )
122122 self .fake_subnet = network_fakes .FakeSubnet .create_one_subnet ()
123123 self .network .find_subnet = mock .Mock (return_value = self .fake_subnet )
124+ self .network .find_extension = mock .Mock (return_value = [])
124125 # Get the command object to test
125126 self .cmd = port .CreatePort (self .app , self .namespace )
126127
@@ -536,7 +537,7 @@ def test_create_port_security_disabled(self):
536537 'name' : 'test-port' ,
537538 })
538539
539- def _test_create_with_tag (self , add_tags = True ):
540+ def _test_create_with_tag (self , add_tags = True , add_tags_in_post = True ):
540541 arglist = [
541542 '--network' , self ._port .network_id ,
542543 'test-port' ,
@@ -555,28 +556,59 @@ def _test_create_with_tag(self, add_tags=True):
555556 else :
556557 verifylist .append (('no_tag' , True ))
557558
559+ self .network .find_extension = mock .Mock (return_value = add_tags_in_post )
560+
558561 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
559562 columns , data = (self .cmd .take_action (parsed_args ))
560563
561- self .network .create_port .assert_called_once_with (
562- admin_state_up = True ,
563- network_id = self ._port .network_id ,
564- name = 'test-port'
565- )
566- if add_tags :
567- self .network .set_tags .assert_called_once_with (
568- self ._port ,
569- tests_utils .CompareBySet (['red' , 'blue' ]))
564+ args = {
565+ 'admin_state_up' : True ,
566+ 'network_id' : self ._port .network_id ,
567+ 'name' : 'test-port' ,
568+ }
569+ if add_tags_in_post :
570+ if add_tags :
571+ args ['tags' ] = sorted (['red' , 'blue' ])
572+ else :
573+ args ['tags' ] = []
574+ self .network .create_port .assert_called_once ()
575+ # Now we need to verify if arguments to call create_port are as
576+ # expected,
577+ # But we can't simply use assert_called_once_with() method because
578+ # duplicates from 'tags' are removed with
579+ # list(set(parsed_args.tags)) and that don't quarantee order of
580+ # tags list which is used to call create_port().
581+ create_port_call_kwargs = self .network .create_port .call_args [1 ]
582+ create_port_call_kwargs ['tags' ] = sorted (
583+ create_port_call_kwargs ['tags' ])
584+ self .assertDictEqual (args , create_port_call_kwargs )
570585 else :
571- self .assertFalse (self .network .set_tags .called )
586+ self .network .create_port .assert_called_once_with (
587+ admin_state_up = True ,
588+ network_id = self ._port .network_id ,
589+ name = 'test-port'
590+ )
591+ if add_tags :
592+ self .network .set_tags .assert_called_once_with (
593+ self ._port ,
594+ tests_utils .CompareBySet (['red' , 'blue' ]))
595+ else :
596+ self .assertFalse (self .network .set_tags .called )
597+
572598 self .assertEqual (self .columns , columns )
573599 self .assertItemEqual (self .data , data )
574600
575601 def test_create_with_tags (self ):
576- self ._test_create_with_tag (add_tags = True )
602+ self ._test_create_with_tag (add_tags = True , add_tags_in_post = True )
577603
578604 def test_create_with_no_tag (self ):
579- self ._test_create_with_tag (add_tags = False )
605+ self ._test_create_with_tag (add_tags = False , add_tags_in_post = True )
606+
607+ def test_create_with_tags_using_put (self ):
608+ self ._test_create_with_tag (add_tags = True , add_tags_in_post = False )
609+
610+ def test_create_with_no_tag_using_put (self ):
611+ self ._test_create_with_tag (add_tags = False , add_tags_in_post = False )
580612
581613 def _test_create_with_uplink_status_propagation (self , enable = True ):
582614 arglist = [
0 commit comments