mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 17:09:03 +00:00
f72bbc5036
Also consolidate pyroute2 network_settings tests into network_settings beacon test module.
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
# 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])
|