Skip to content

Commit

Permalink
added tests for snmp params
Browse files Browse the repository at this point in the history
  • Loading branch information
Costya-Y committed Oct 13, 2018
1 parent aca3303 commit 264e873
Show file tree
Hide file tree
Showing 5 changed files with 194 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ install:

script:
- python setup.py develop
- nosetests --with-coverage --cover-package=cloudshell.snmp --where=tests --attr=NOSE_COVER_CONFIG_FILE=.
- nosetests --with-coverage --cover-package=cloudshell.snmp --where=tests
- python setup.py sdist --format zip

after_success:
Expand Down
6 changes: 1 addition & 5 deletions test_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
ply==3.11
pyasn1==0.4.2
pycryptodomex==3.5.1
pysmi==0.2.2
pysnmp==4.4.4
mock
44 changes: 44 additions & 0 deletions tests/recorder/model/test_base_snmp_params.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from unittest import TestCase

from mock import patch, MagicMock, PropertyMock

from cloudshell.recorder.model.base_snmp_parameters import BaseSnmpParameters


class TestBaseSnmpParams(TestCase):
IP = "1.1.1.1"
SNMP_COMMUNITY = "test"

@patch("cloudshell.recorder.model.base_snmp_parameters.engine")
@patch("cloudshell.recorder.model.base_snmp_parameters.config")
@patch("cloudshell.recorder.model.base_snmp_parameters.udp")
@patch("cloudshell.recorder.model.base_snmp_parameters.udp6")
@patch("cloudshell.recorder.model.base_snmp_parameters.univ")
@patch("cloudshell.recorder.model.base_snmp_parameters.socket")
@patch("cloudshell.recorder.model.base_snmp_parameters.sys")
def test_init(self, sys_mock, socket_mock, pyasn1_mock, pysnmp_udp6_mock, pysnmp_udp_mock, pysnmp_config_mock,
pysnmp_engine_mock):
# Setup
port = 162
is_ipv6 = True
timeout = 1
retry_count = 1
get_bulk_flag = True
continue_on_errors = 1
get_bulk_repetitions = 2
v3_context_engine_id = MagicMock()
v3_context = MagicMock()

# Act
params = BaseSnmpParameters(ip=self.IP, port=port,
is_ipv6=is_ipv6, timeout=timeout, retry_count=retry_count,
get_bulk_flag=get_bulk_flag, continue_on_errors=continue_on_errors,
get_bulk_repetitions=get_bulk_repetitions,
v3_context_engine_id=v3_context_engine_id,
v3_context=v3_context)

# Assert
pysnmp_engine_mock.SnmpEngine.assert_called_once()
self.assertEqual(pysnmp_engine_mock.SnmpEngine.return_value, params.snmp_engine)
self.assertEqual(None, params.close_snmp_engine_dispatcher())
pysnmp_engine_mock.SnmpEngine.return_value.transportDispatcher.closeDispatcher.assert_called_once()
48 changes: 47 additions & 1 deletion tests/recorder/model/test_snmp_v2_params.py
Original file line number Diff line number Diff line change
@@ -1 +1,47 @@
IP
from unittest import TestCase

from mock import patch, MagicMock, PropertyMock

from cloudshell.recorder.model.snmp_v2_parameters import SnmpV2Parameters


class TestSnmpV2Params(TestCase):
IP = "1.1.1.1"
SNMP_COMMUNITY = "test"

@patch("cloudshell.recorder.model.snmp_v2_parameters.config")
@patch("__builtin__.super", create=True, return_value=MagicMock())
@patch("cloudshell.recorder.model.snmp_v2_parameters.SnmpV2Parameters._snmp_engine", create=True, new_callable=PropertyMock,
return_value="")
@patch("cloudshell.recorder.model.snmp_v2_parameters.SnmpV2Parameters.get_bulk_flag", create=True, new_callable=PropertyMock)
def test_init(self, bulk_rep_mock, engine_mock, super_mock, config_mock):
# Setup
version = "1"
# Strange pysnmp snmp version conversion
snmp_version = 0
sec_level = 'noAuthNoPriv'
user = 'agt'
port = 162
is_ipv6 = True
timeout = 1
retry_count = 1
get_bulk_flag = True
continue_on_errors = 1
get_bulk_repetitions = 2
v3_context_engine_id = MagicMock()
v3_context = MagicMock()
bulk_rep_mock.return_value = get_bulk_flag

# Act
params = SnmpV2Parameters(ip=self.IP, snmp_community=self.SNMP_COMMUNITY, snmp_version=version, port=port,
is_ipv6=is_ipv6, timeout=timeout, retry_count=retry_count,
get_bulk_flag=get_bulk_flag, continue_on_errors=continue_on_errors,
get_bulk_repetitions=get_bulk_repetitions, v3_context_engine_id=v3_context_engine_id,
v3_context=v3_context)

# Assert
super_mock.assert_called_once_with(SnmpV2Parameters, params)
self.assertEqual(snmp_version, params.get_snmp_version)
self.assertEqual(sec_level, params.get_security)
self.assertEqual(user, params.get_user)

102 changes: 101 additions & 1 deletion tests/recorder/model/test_snmp_v3_params.py
Original file line number Diff line number Diff line change
@@ -1 +1,101 @@
IP
from unittest import TestCase

from mock import patch, MagicMock, PropertyMock

from cloudshell.recorder.model.snmp_v3_parameters import SnmpV3Parameters


class TestSnmpV3Params(TestCase):
IP = "1.1.1.1"
SNMP_COMMUNITY = "test"

@patch("cloudshell.recorder.model.snmp_v3_parameters.config")
@patch("__builtin__.super", create=True, return_value=MagicMock())
@patch("cloudshell.recorder.model.snmp_v3_parameters.SnmpV3Parameters._snmp_engine", create=True,
new_callable=PropertyMock,
return_value="")
@patch("cloudshell.recorder.model.snmp_v3_parameters.SnmpV3Parameters.get_bulk_flag", create=True,
new_callable=PropertyMock)
def test_init(self, bulk_rep_mock, engine_mock, super_mock, config_mock):
# Setup
snmp_version = 3
sec_level = 'noAuthNoPriv'
user = 'agt'
password = None
private_key = None
auth_protocol = "SHA"
priv_protocol = "DES"
port = 162
is_ipv6 = True
timeout = 1
retry_count = 1
get_bulk_flag = True
continue_on_errors = 1
get_bulk_repetitions = 2
v3_context_engine_id = MagicMock()
v3_context = MagicMock()
bulk_rep_mock.return_value = get_bulk_flag

# Act
params = SnmpV3Parameters(ip=self.IP, v3_user=user, v3_auth_key=password, v3_priv_key=private_key,
v3_auth_proto=auth_protocol, v3_priv_proto=priv_protocol, port=port,
is_ipv6=is_ipv6, timeout=timeout, retry_count=retry_count,
get_bulk_flag=get_bulk_flag, continue_on_errors=continue_on_errors,
get_bulk_repetitions=get_bulk_repetitions, v3_context_engine_id=v3_context_engine_id,
v3_context=v3_context)

# Assert
super_mock.assert_called_once_with(SnmpV3Parameters, params)
self.assertEqual(snmp_version, params.get_snmp_version)
self.assertEqual(sec_level, params.get_security)
self.assertEqual(user, params.get_user)

@patch("cloudshell.recorder.model.snmp_v3_parameters.config")
@patch("__builtin__.super", create=True, return_value=MagicMock())
@patch("cloudshell.recorder.model.snmp_v3_parameters.SnmpV3Parameters._snmp_engine", create=True,
new_callable=PropertyMock,
return_value="")
def test_sec_level_auth(self, engine_mock, super_mock, config_mock):
# Setup
snmp_version = 3
sec_level = 'authNoPriv'
user = 'agt'
password = "pass"
private_key = None
auth_protocol = "SHA"
priv_protocol = "DES"

# Act
params = SnmpV3Parameters(ip=self.IP, v3_user=user, v3_auth_key=password, v3_priv_key=private_key,
v3_auth_proto=auth_protocol, v3_priv_proto=priv_protocol)

# Assert
super_mock.assert_called_once_with(SnmpV3Parameters, params)
self.assertEqual(snmp_version, params.get_snmp_version)
self.assertEqual(sec_level, params.get_security)
self.assertEqual(user, params.get_user)

@patch("cloudshell.recorder.model.snmp_v3_parameters.config")
@patch("__builtin__.super", create=True, return_value=MagicMock())
@patch("cloudshell.recorder.model.snmp_v3_parameters.SnmpV3Parameters._snmp_engine", create=True,
new_callable=PropertyMock,
return_value="")
def test_sec_level_priv(self, engine_mock, super_mock, config_mock):
# Setup
snmp_version = 3
sec_level = 'authPriv'
user = 'agt'
password = "pass"
private_key = "pass"
auth_protocol = "SHA"
priv_protocol = "DES"

# Act
params = SnmpV3Parameters(ip=self.IP, v3_user=user, v3_auth_key=password, v3_priv_key=private_key,
v3_auth_proto=auth_protocol, v3_priv_proto=priv_protocol)

# Assert
super_mock.assert_called_once_with(SnmpV3Parameters, params)
self.assertEqual(snmp_version, params.get_snmp_version)
self.assertEqual(sec_level, params.get_security)
self.assertEqual(user, params.get_user)

0 comments on commit 264e873

Please sign in to comment.