# -*- coding: utf-8 -*- ''' :codeauthor: :email:`Anthony Shaw ` ''' # Import Python Libs from __future__ import absolute_import, unicode_literals, print_function # Import Salt Testing Libs from tests.support.mixins import LoaderModuleMockMixin from tests.support.unit import TestCase, skipIf from tests.support.mock import ( MagicMock, NO_MOCK, NO_MOCK_REASON ) import tests.support.napalm as napalm_test_support import salt.modules.napalm_probes as napalm_probes # NOQA TEST_PROBES = { 'new_probe': { 'new_test1': { 'probe_type': 'icmp-ping', 'target': '192.168.0.1', 'source': '192.168.0.2', 'probe_count': 13, 'test_interval': 3 } } } TEST_DELETE_PROBES = { 'existing_probe': { 'existing_test1': {}, 'existing_test2': {} } } TEST_SCHEDULE_PROBES = { 'test_probe': { 'existing_test1': {}, 'existing_test2': {} } } def mock_net_load(template, *args, **kwargs): if template == 'set_probes': assert kwargs['probes'] == TEST_PROBES return napalm_test_support.TEST_TERM_CONFIG if template == 'delete_probes': assert kwargs['probes'] == TEST_DELETE_PROBES return napalm_test_support.TEST_TERM_CONFIG if template == 'schedule_probes': assert kwargs['probes'] == TEST_SCHEDULE_PROBES return napalm_test_support.TEST_TERM_CONFIG raise ValueError("incorrect template {0}".format(template)) @skipIf(NO_MOCK, NO_MOCK_REASON) class NapalmProbesModuleTestCase(TestCase, LoaderModuleMockMixin): def setup_loader_modules(self): module_globals = { '__salt__': { 'config.option': MagicMock(return_value={ 'test': { 'driver': 'test', 'key': '2orgk34kgk34g' } }), 'file.file_exists': napalm_test_support.true, 'file.join': napalm_test_support.join, 'file.get_managed': napalm_test_support.get_managed_file, 'random.hash': napalm_test_support.random_hash, 'net.load_template': mock_net_load } } return {napalm_probes: module_globals} def test_probes_config(self): ret = napalm_probes.config() assert ret['out'] == napalm_test_support.TEST_PROBES_CONFIG def test_probes_results(self): ret = napalm_probes.results() assert ret['out'] == napalm_test_support.TEST_PROBES_RESULTS def test_set_probes(self): ret = napalm_probes.set_probes(TEST_PROBES) assert ret['result'] is True def test_delete_probes(self): ret = napalm_probes.delete_probes(TEST_DELETE_PROBES) assert ret['result'] is True def test_schedule_probes(self): ret = napalm_probes.schedule_probes(TEST_SCHEDULE_PROBES) assert ret['result'] is True