1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # coding: utf-8
- # Python libs
- from __future__ import absolute_import
- # Salt testing libs
- from tests.support.unit import skipIf, TestCase
- from tests.support.mock import NO_MOCK, NO_MOCK_REASON
- from tests.support.mixins import LoaderModuleMockMixin
- try:
- from pyroute2 import IPDB
- HAS_PYROUTE2 = True
- except ImportError:
- HAS_PYROUTE2 = False
- # Salt libs
- import salt.beacons.network_settings as network_settings
- import logging
- log = logging.getLogger(__name__)
- @skipIf(NO_MOCK, NO_MOCK_REASON)
- class NetworkSettingsBeaconTestCase(TestCase, LoaderModuleMockMixin):
- '''
- Test case for salt.beacons.network_settings
- '''
- def setup_loader_modules(self):
- return {
- network_settings: {
- '__context__': {},
- '__salt__': {},
- }
- }
- def test_non_list_config(self):
- config = {}
- ret = network_settings.validate(config)
- self.assertEqual(ret, (False, 'Configuration for network_settings'
- ' beacon must be a list.'))
- def test_empty_config(self):
- config = [{}]
- ret = network_settings.validate(config)
- self.assertEqual(ret, (True, 'Valid beacon configuration'))
- @skipIf(not HAS_PYROUTE2, 'no pyroute2 installed, skipping')
- class Pyroute2TestCase(TestCase):
- def test_interface_dict_fields(self):
- with IPDB() as ipdb:
- for attr in network_settings.ATTRS:
- # ipdb.interfaces is a dict-like object, that
- # contains interface definitions. Interfaces can
- # be referenced both with indices and names.
- #
- # ipdb.interfaces[1] is an interface with index 1,
- # that is the loopback interface.
- self.assertIn(attr, ipdb.interfaces[1])
|