11from unittest import TestCase
22
3- from mock import MagicMock
3+ from cloudshell .snmp .snmp_parameters import SNMPV3Parameters , SNMPV2ReadParameters , SNMPV2WriteParameters
4+ from mock import MagicMock , patch
45from cloudshell .networking .cisco .flows .cisco_disable_snmp_flow import CiscoDisableSnmpFlow
6+ from cloudshell .networking .cisco .flows .cisco_enable_snmp_flow import CiscoEnableSnmpFlow
57
68
79class TestCiscoDisableSNMPFlow (TestCase ):
8- def _get_handler (self , output ):
10+ IP = "localhost"
11+ SNMP_WRITE_COMMUNITY = "private"
12+ SNMP_READ_COMMUNITY = "public"
13+ SNMP_USER = "admin"
14+ SNMP_PASSWORD = "P@ssw0rD"
15+ SNMP_PRIVATE_KEY = "PrivKey"
16+
17+ def _get_handler (self , remove_group = True ):
18+ self .snmp_v2_write_parameters = SNMPV2WriteParameters (ip = self .IP ,
19+ snmp_write_community = self .SNMP_WRITE_COMMUNITY )
20+ self .snmp_v2_read_parameters = SNMPV2ReadParameters (ip = self .IP , snmp_read_community = self .SNMP_READ_COMMUNITY )
21+ self .snmp_v3_parameters = SNMPV3Parameters (ip = self .IP , snmp_user = self .SNMP_USER ,
22+ snmp_password = self .SNMP_PASSWORD ,
23+ snmp_private_key = self .SNMP_PRIVATE_KEY )
924 cli = MagicMock ()
10- self .session = MagicMock ()
11- self .session .send_command .return_value = output
12- cliservice = MagicMock ()
13- cliservice .__enter__ .return_value = self .session
14- cli .get_cli_service .return_value = cliservice
1525 logger = MagicMock ()
16- return CiscoDisableSnmpFlow (cli_handler = cli , logger = logger )
26+ return CiscoDisableSnmpFlow (cli_handler = cli , logger = logger , remove_group = remove_group )
27+
28+ @patch ("cloudshell.networking.cisco.flows.cisco_disable_snmp_flow.EnableDisableSnmpActions" )
29+ def test_disable_snmp_v3_no_group (self , disable_actions_mock ):
30+ disable_actions_mock .return_value .get_current_snmp_user .side_effect = [self .SNMP_USER , "" ]
31+
32+ disable_flow = self ._get_handler (remove_group = False )
33+ self .snmp_v3_parameters = SNMPV3Parameters (ip = self .IP , snmp_user = self .SNMP_USER ,
34+ snmp_password = self .SNMP_PASSWORD ,
35+ snmp_private_key = self .SNMP_PRIVATE_KEY ,
36+ private_key_protocol = "DES" )
37+ disable_flow .execute_flow (self .snmp_v3_parameters )
38+ disable_actions_mock .return_value .get_current_snmp_user .assert_called ()
39+ disable_actions_mock .return_value .remove_snmp_user .assert_called_once_with (self .snmp_v3_parameters .snmp_user )
40+
41+ @patch ("cloudshell.networking.cisco.flows.cisco_disable_snmp_flow.EnableDisableSnmpActions" )
42+ def test_disable_snmp_v3_with_group (self , disable_actions_mock ):
43+ disable_actions_mock .return_value .get_current_snmp_user .side_effect = [self .SNMP_USER , "" ]
44+ disable_actions_mock .return_value .get_current_snmp_config .return_value = "snmp-server view {}" .format (
45+ CiscoEnableSnmpFlow .DEFAULT_SNMP_VIEW )
46+
47+ disable_flow = self ._get_handler ()
48+ self .snmp_v3_parameters = SNMPV3Parameters (ip = self .IP , snmp_user = self .SNMP_USER ,
49+ snmp_password = self .SNMP_PASSWORD ,
50+ snmp_private_key = self .SNMP_PRIVATE_KEY ,
51+ private_key_protocol = "DES" )
52+ disable_flow .execute_flow (self .snmp_v3_parameters )
53+ disable_actions_mock .return_value .get_current_snmp_user .assert_called ()
54+ disable_actions_mock .return_value .remove_snmp_user .assert_called_once_with (self .snmp_v3_parameters .snmp_user ,
55+ CiscoEnableSnmpFlow .DEFAULT_SNMP_GROUP )
56+ disable_actions_mock .return_value .get_current_snmp_config .assert_called_once ()
57+ disable_actions_mock .return_value .remove_snmp_group .assert_called_once_with (
58+ CiscoEnableSnmpFlow .DEFAULT_SNMP_GROUP )
59+ disable_actions_mock .return_value .remove_snmp_view .assert_called_once_with (
60+ CiscoEnableSnmpFlow .DEFAULT_SNMP_VIEW )
61+
62+ @patch ("cloudshell.networking.cisco.flows.cisco_disable_snmp_flow.EnableDisableSnmpActions" )
63+ def test_disable_snmp_v2_read (self , disable_actions_mock ):
64+ disable_actions_mock .return_value .get_current_snmp_config .return_value = ""
65+
66+ disable_flow = self ._get_handler ()
67+
68+ disable_flow .execute_flow (self .snmp_v2_read_parameters )
69+ disable_actions_mock .return_value .get_current_snmp_config .assert_called_once ()
70+ disable_actions_mock .return_value .disable_snmp .assert_called_once_with (
71+ self .snmp_v2_read_parameters .snmp_community )
0 commit comments