""" just checks that the worker methods call the right functions and some data ends up in the right place ... otherwise not very detailed """ import json import logging from lxml import etree import pytest from inventory_provider.tasks import worker class MockedRedis(object): db = {} def __init__(self, *args, **kwargs): pass def hset(self, name, key, value): assert isinstance(value, str) if key == 'netconf': etree.fromstring(value) elif key == 'snmp-interfaces': obj = json.loads(value) assert isinstance(obj, list) MockedRedis.db.setdefault(name, {})[key] = value @pytest.fixture def mocked_worker_module(mocker, data_config): worker.InventoryTask.config = data_config worker.InventoryTask.logger = logging.getLogger() MockedRedis.db = {} mocker.patch( 'inventory_provider.tasks.worker.redis.StrictRedis', MockedRedis) def test_netconf_refresh_config( mocked_worker_module, mocker, cached_test_data): def _mocked_load_juniper_netconf_config(hostname, _): return etree.XML(cached_test_data[hostname]["netconf"]) mocker.patch( 'inventory_provider.tasks.worker.juniper.load_config', _mocked_load_juniper_netconf_config) for hostname in cached_test_data.keys(): assert 'hostname' not in MockedRedis.db worker.netconf_refresh_config(hostname) assert MockedRedis.db[hostname]['netconf'] def test_snmp_refresh_interfaces( mocked_worker_module, mocker, cached_test_data): def _mocked_snmp_interfaces(hostname, community, _): return json.loads(cached_test_data[hostname]["snmp-interfaces"]) mocker.patch( 'inventory_provider.tasks.worker.snmp.get_router_interfaces', _mocked_snmp_interfaces) for hostname in cached_test_data.keys(): assert 'hostname' not in MockedRedis.db worker.snmp_refresh_interfaces(hostname, 'fake-community') assert MockedRedis.db[hostname]['snmp-interfaces']