# -*- coding: utf-8 -*- """ :synopsis: Unit Tests for Windows SNMP Module 'state.win_snmp' :platform: Windows :maturity: develop .. versionadded:: 2017.7.0 """ # Import Python Libs from __future__ import absolute_import, print_function, unicode_literals # Import Salt Libs import salt.states.win_snmp as win_snmp from salt.ext import six # Import Salt Testing Libs from tests.support.mixins import LoaderModuleMockMixin from tests.support.mock import MagicMock, patch from tests.support.unit import TestCase class WinSnmpTestCase(TestCase, LoaderModuleMockMixin): """ Test cases for salt.modules.win_snmp """ def setup_loader_modules(self): return {win_snmp: {}} def test_agent_settings(self): """ Test - Manage the SNMP sysContact, sysLocation, and sysServices settings. """ kwargs = { "name": "agent-settings", "contact": "TestContact", "location": "TestLocation", "services": ["Internet"], } ret = { "name": kwargs["name"], "changes": {}, "comment": "Agent settings already contain the provided values.", "result": True, } # Using this instead of dictionary comprehension in order to make pylint happy. get_ret = dict( (key, value) for (key, value) in six.iteritems(kwargs) if key != "name" ) mock_value_get = MagicMock(return_value=get_ret) mock_value_set = MagicMock(return_value=True) with patch.dict( win_snmp.__salt__, { "win_snmp.get_agent_settings": mock_value_get, "win_snmp.set_agent_settings": mock_value_set, }, ): with patch.dict(win_snmp.__opts__, {"test": False}): self.assertEqual(win_snmp.agent_settings(**kwargs), ret) def test_auth_traps_enabled(self): """ Test - Manage the sending of authentication traps. """ kwargs = {"name": "auth-traps", "status": True} ret = { "name": kwargs["name"], "changes": {"old": False, "new": True}, "comment": "Set EnableAuthenticationTraps to contain the provided value.", "result": True, } mock_value_get = MagicMock(return_value=False) mock_value_set = MagicMock(return_value=True) with patch.dict( win_snmp.__salt__, { "win_snmp.get_auth_traps_enabled": mock_value_get, "win_snmp.set_auth_traps_enabled": mock_value_set, }, ): with patch.dict(win_snmp.__opts__, {"test": False}): self.assertEqual(win_snmp.auth_traps_enabled(**kwargs), ret) with patch.dict(win_snmp.__opts__, {"test": True}): ret["comment"] = "EnableAuthenticationTraps will be changed." ret["result"] = None self.assertEqual(win_snmp.auth_traps_enabled(**kwargs), ret) def test_community_names(self): """ Test - Manage the SNMP accepted community names and their permissions. """ kwargs = { "name": "community-names", "communities": {"TestCommunity": "Read Create"}, } ret = { "name": kwargs["name"], "changes": {}, "comment": "Communities already contain the provided values.", "result": True, } mock_value_get = MagicMock(return_value=kwargs["communities"]) mock_value_set = MagicMock(return_value=True) with patch.dict( win_snmp.__salt__, { "win_snmp.get_community_names": mock_value_get, "win_snmp.set_community_names": mock_value_set, }, ): with patch.dict(win_snmp.__opts__, {"test": False}): self.assertEqual(win_snmp.community_names(**kwargs), ret)