@@ -606,3 +606,153 @@ def test_config_dhcp_server_ipv4_unbind_unbind_ip(self, mock_db):
606
606
["Vlan100" , "Ethernet4" , "100.1.1.13,100.1.1.14" ], obj = db )
607
607
assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
608
608
609
+ def test_config_dhcp_server_ipv4_option_add (self , mock_db ):
610
+ expected_value = {
611
+ "option_id" : "165" ,
612
+ "type" : "string" ,
613
+ "value" : "dummy_value"
614
+ }
615
+ runner = CliRunner ()
616
+ db = clicommon .Db ()
617
+ db .db = mock_db
618
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["add" ], \
619
+ ["option62" , "165" , "string" , "dummy_value" ], obj = db )
620
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
621
+ assert mock_db .get_all ("CONFIG_DB" , "DHCP_SERVER_IPV4_CUSTOMIZED_OPTIONS|option62" ) == expected_value
622
+
623
+ def test_config_dhcp_server_ipv4_option_add_existing (self , mock_db ):
624
+ runner = CliRunner ()
625
+ db = clicommon .Db ()
626
+ db .db = mock_db
627
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["add" ], \
628
+ ["option60" , "163" , "string" , "dummy_value" ], obj = db )
629
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
630
+
631
+ def test_config_dhcp_server_ipv4_option_add_illegal_option_id (self , mock_db ):
632
+ runner = CliRunner ()
633
+ db = clicommon .Db ()
634
+ db .db = mock_db
635
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["add" ], \
636
+ ["option62" , "10" , "string" , "dummy_value" ], obj = db )
637
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
638
+
639
+ def test_config_dhcp_server_ipv4_option_add_illegal_type (self , mock_db ):
640
+ runner = CliRunner ()
641
+ db = clicommon .Db ()
642
+ db .db = mock_db
643
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["add" ], \
644
+ ["option62" , "165" , "xx" , "xx" ], obj = db )
645
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
646
+
647
+ def test_config_dhcp_server_ipv4_option_add_illegal_value (self , mock_db ):
648
+ runner = CliRunner ()
649
+ db = clicommon .Db ()
650
+ db .db = mock_db
651
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["add" ], \
652
+ ["option62" , "165" , "uint8" , "1000000" ], obj = db )
653
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
654
+
655
+ def test_config_dhcp_server_ipv4_option_del (self , mock_db ):
656
+ runner = CliRunner ()
657
+ db = clicommon .Db ()
658
+ db .db = mock_db
659
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["del" ], \
660
+ ["option61" ], obj = db )
661
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
662
+ assert mock_db .exists ("CONFIG_DB" , "DHCP_SERVER_IPV4_CUSTOMIZED_OPTIONS|option61" ) == False
663
+
664
+ def test_config_dhcp_server_ipv4_option_del_nonexisting (self , mock_db ):
665
+ runner = CliRunner ()
666
+ db = clicommon .Db ()
667
+ db .db = mock_db
668
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["del" ], \
669
+ ["option62" ], obj = db )
670
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
671
+
672
+ def test_config_dhcp_server_ipv4_option_del_referenced (self , mock_db ):
673
+ runner = CliRunner ()
674
+ db = clicommon .Db ()
675
+ db .db = mock_db
676
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["del" ], \
677
+ ["option60" ], obj = db )
678
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
679
+
680
+ def test_config_dhcp_server_ipv4_option_bind (self , mock_db ):
681
+ runner = CliRunner ()
682
+ db = clicommon .Db ()
683
+ db .db = mock_db
684
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["bind" ], \
685
+ ["Vlan300" , "option60" ], obj = db )
686
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
687
+ assert mock_db .get ("CONFIG_DB" , "DHCP_SERVER_IPV4|Vlan300" , "customized_options" ) == "option60"
688
+
689
+ def test_config_dhcp_server_ipv4_option_bind_multiple_options (self , mock_db ):
690
+ runner = CliRunner ()
691
+ db = clicommon .Db ()
692
+ db .db = mock_db
693
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["bind" ], \
694
+ ["Vlan300" , "option60,option61" ], obj = db )
695
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
696
+ result = mock_db .get ("CONFIG_DB" , "DHCP_SERVER_IPV4|Vlan300" , "customized_options" )
697
+ assert result and set (result .split ("," )) == set ("option60,option61" .split ("," ))
698
+
699
+ def test_config_dhcp_server_ipv4_option_bind_to_existing (self , mock_db ):
700
+ runner = CliRunner ()
701
+ db = clicommon .Db ()
702
+ db .db = mock_db
703
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["bind" ], \
704
+ ["Vlan100" , "option61" ], obj = db )
705
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
706
+ result = mock_db .get ("CONFIG_DB" , "DHCP_SERVER_IPV4|Vlan100" , "customized_options" )
707
+ assert result and set (result .split ("," )) == set ("option60,option61" .split ("," ))
708
+
709
+ def test_config_dhcp_server_ipv4_option_bind_same_option_to_existing (self , mock_db ):
710
+ runner = CliRunner ()
711
+ db = clicommon .Db ()
712
+ db .db = mock_db
713
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["bind" ], \
714
+ ["Vlan100" , "option60" ], obj = db )
715
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
716
+ assert mock_db .get ("CONFIG_DB" , "DHCP_SERVER_IPV4|Vlan100" , "customized_options" ) == "option60"
717
+
718
+ def test_config_dhcp_server_ipv4_option_bind_to_nonexisting_intf (self , mock_db ):
719
+ runner = CliRunner ()
720
+ db = clicommon .Db ()
721
+ db .db = mock_db
722
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["bind" ], \
723
+ ["Vlan200" , "option60" ], obj = db )
724
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
725
+
726
+ def test_config_dhcp_server_ipv4_option_bind_nonexisting_option (self , mock_db ):
727
+ runner = CliRunner ()
728
+ db = clicommon .Db ()
729
+ db .db = mock_db
730
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["bind" ], \
731
+ ["Vlan300" , "option62" ], obj = db )
732
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
733
+
734
+ def test_config_dhcp_server_ipv4_option_unbind (self , mock_db ):
735
+ runner = CliRunner ()
736
+ db = clicommon .Db ()
737
+ db .db = mock_db
738
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["unbind" ], \
739
+ ["Vlan100" , "option60" ], obj = db )
740
+ assert result .exit_code == 0 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
741
+ result = mock_db .get ("CONFIG_DB" , "DHCP_SERVER_IPV4|Vlan100" , "customized_options" )
742
+ assert result == None or result == ""
743
+
744
+ def test_config_dhcp_server_ipv4_option_unbind_nonexisting_intf (self , mock_db ):
745
+ runner = CliRunner ()
746
+ db = clicommon .Db ()
747
+ db .db = mock_db
748
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["unbind" ], \
749
+ ["Vlan200" , "option60" ], obj = db )
750
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
751
+
752
+ def test_config_dhcp_server_ipv4_option_unbind_nonexisting_option (self , mock_db ):
753
+ runner = CliRunner ()
754
+ db = clicommon .Db ()
755
+ db .db = mock_db
756
+ result = runner .invoke (dhcp_server .dhcp_server .commands ["ipv4" ].commands ["option" ].commands ["unbind" ], \
757
+ ["Vlan100" , "option61" ], obj = db )
758
+ assert result .exit_code == 2 , "exit code: {}, Exception: {}, Traceback: {}" .format (result .exit_code , result .exception , result .exc_info )
0 commit comments