@@ -119,6 +119,7 @@ def setUp(self):
119119 self .network .find_network = mock .Mock (return_value = fake_net )
120120 self .fake_subnet = network_fakes .FakeSubnet .create_one_subnet ()
121121 self .network .find_subnet = mock .Mock (return_value = self .fake_subnet )
122+ self .network .find_extension = mock .Mock (return_value = [])
122123 # Get the command object to test
123124 self .cmd = port .CreatePort (self .app , self .namespace )
124125
@@ -534,7 +535,7 @@ def test_create_port_security_disabled(self):
534535 'name' : 'test-port' ,
535536 })
536537
537- def _test_create_with_tag (self , add_tags = True ):
538+ def _test_create_with_tag (self , add_tags = True , add_tags_in_post = True ):
538539 arglist = [
539540 '--network' , self ._port .network_id ,
540541 'test-port' ,
@@ -553,28 +554,59 @@ def _test_create_with_tag(self, add_tags=True):
553554 else :
554555 verifylist .append (('no_tag' , True ))
555556
557+ self .network .find_extension = mock .Mock (return_value = add_tags_in_post )
558+
556559 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
557560 columns , data = (self .cmd .take_action (parsed_args ))
558561
559- self .network .create_port .assert_called_once_with (
560- admin_state_up = True ,
561- network_id = self ._port .network_id ,
562- name = 'test-port'
563- )
564- if add_tags :
565- self .network .set_tags .assert_called_once_with (
566- self ._port ,
567- tests_utils .CompareBySet (['red' , 'blue' ]))
562+ args = {
563+ 'admin_state_up' : True ,
564+ 'network_id' : self ._port .network_id ,
565+ 'name' : 'test-port' ,
566+ }
567+ if add_tags_in_post :
568+ if add_tags :
569+ args ['tags' ] = sorted (['red' , 'blue' ])
570+ else :
571+ args ['tags' ] = []
572+ self .network .create_port .assert_called_once ()
573+ # Now we need to verify if arguments to call create_port are as
574+ # expected,
575+ # But we can't simply use assert_called_once_with() method because
576+ # duplicates from 'tags' are removed with
577+ # list(set(parsed_args.tags)) and that don't quarantee order of
578+ # tags list which is used to call create_port().
579+ create_port_call_kwargs = self .network .create_port .call_args [1 ]
580+ create_port_call_kwargs ['tags' ] = sorted (
581+ create_port_call_kwargs ['tags' ])
582+ self .assertDictEqual (args , create_port_call_kwargs )
568583 else :
569- self .assertFalse (self .network .set_tags .called )
584+ self .network .create_port .assert_called_once_with (
585+ admin_state_up = True ,
586+ network_id = self ._port .network_id ,
587+ name = 'test-port'
588+ )
589+ if add_tags :
590+ self .network .set_tags .assert_called_once_with (
591+ self ._port ,
592+ tests_utils .CompareBySet (['red' , 'blue' ]))
593+ else :
594+ self .assertFalse (self .network .set_tags .called )
595+
570596 self .assertEqual (self .columns , columns )
571597 self .assertItemEqual (self .data , data )
572598
573599 def test_create_with_tags (self ):
574- self ._test_create_with_tag (add_tags = True )
600+ self ._test_create_with_tag (add_tags = True , add_tags_in_post = True )
575601
576602 def test_create_with_no_tag (self ):
577- self ._test_create_with_tag (add_tags = False )
603+ self ._test_create_with_tag (add_tags = False , add_tags_in_post = True )
604+
605+ def test_create_with_tags_using_put (self ):
606+ self ._test_create_with_tag (add_tags = True , add_tags_in_post = False )
607+
608+ def test_create_with_no_tag_using_put (self ):
609+ self ._test_create_with_tag (add_tags = False , add_tags_in_post = False )
578610
579611 def _test_create_with_uplink_status_propagation (self , enable = True ):
580612 arglist = [
0 commit comments