Skip to content
Snippets Groups Projects
test_celery_worker.py 1.94 KiB
"""
just checks that the worker methods call the right functions
and some data ends up in the right place ... otherwise not very detailed
"""
from inventory_provider.tasks import worker
from inventory_provider.tasks.common import get_redis


def backend_db():
    return get_redis({
        'redis': {'hostname': None, 'port': None}
    }).db


def test_netconf_refresh_config(mocked_worker_module, router):
    del backend_db()['netconf:' + router]
    worker.netconf_refresh_config(router)
    assert backend_db()['netconf:' + router]


def test_snmp_refresh_interfaces(mocked_worker_module, router):
    del backend_db()['snmp-interfaces:' + router]
    worker.snmp_refresh_interfaces(router, 'fake-community')
    assert backend_db()['snmp-interfaces:' + router]


def test_reload_router_config(mocked_worker_module, router, mocker):
    saved_data = {}
    for key in ('netconf:' + router, 'snmp-interfaces:' + router):
        saved_data[key] = backend_db().pop(key)
    assert 'netconf:' + router not in backend_db()
    assert 'snmp-interfaces:' + router not in backend_db()

    def _mocked_netconf_refresh_config_apply(args):
        key = 'netconf:' + args[0]
        backend_db()[key] = saved_data[key]
    mocker.patch(
        'inventory_provider.tasks.worker.netconf_refresh_config.apply',
        _mocked_netconf_refresh_config_apply)

    def _mocked_snmp_refresh_interfaces_apply(args):
        assert len(args) == 2
        key = 'snmp-interfaces:' + args[0]
        backend_db()[key] = saved_data[key]
    mocker.patch(
        'inventory_provider.tasks.worker.snmp_refresh_interfaces.apply',
        _mocked_snmp_refresh_interfaces_apply)

    def _mocked_update_status(self, **kwargs):
        pass
    mocker.patch(
        'inventory_provider.tasks.worker.InventoryTask.update_state',
        _mocked_update_status)

    worker.reload_router_config(router)
    assert 'netconf:' + router in backend_db()
    assert 'snmp-interfaces:' + router in backend_db()