Skip to content
Snippets Groups Projects
test_external_inventory_routes.py 3.77 KiB
import json
from inventory_provider.storage import external_inventory

DEFAULT_REQUEST_HEADERS = {
    "Content-type": "application/json",
    "Accept": ["application/json"]
}


def test_get_one_equipment_location(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hget = mocked_redis.return_value.hget
    dummy_data = {
        "absid": 1404,
        "equipment_name": "pp-cz-e13b",
        "pop_name": "Prague",
        "pop_abbreviation": "pra",
        "pop_site_id": "",
        "country": "Czech Republic",
        "longitude": 14.391738888889,
        "latitude": 50.101847222222
    }
    mocked_hget.return_value = json.dumps(dummy_data)

    rv = client.get(
        '/opsdb/equipment-location/dummy-equipment',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json
    assert dummy_data == json.loads(rv.data.decode("utf-8"))

    mocked_hget.assert_called_with(
        external_inventory.equipment_locations_key,
        "dummy-equipment"
    )


def test_get_equipment_location(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hgetall = mocked_redis.return_value.hgetall

    rv = client.get(
        '/opsdb/equipment-location',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json

    mocked_hgetall.assert_called_with(
        external_inventory.equipment_locations_key
    )


def test_get_interface_info(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hgetall = mocked_redis.return_value.hgetall

    rv = client.get(
        '/opsdb/interfaces',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json

    mocked_hgetall.assert_called_with(
        external_inventory.interfaces_key
    )


def test_get_interface_info_for_equipment(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hscan_iter = mocked_redis.return_value.hscan_iter

    rv = client.get(
        '/opsdb/interfaces/dummy-equipment',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json

    mocked_hscan_iter.assert_called_with(
        external_inventory.interfaces_key, "dummy-equipment::*"
    )


def test_get_interface_info_for_equipment_and_interface(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hget = mocked_redis.return_value.hget

    rv = client.get(
        '/opsdb/interfaces/dummy-equipment/xe-2/3/1',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json

    mocked_hget.assert_called_with(
        external_inventory.interfaces_key, "dummy-equipment::xe-2/3/1"
    )


def test_get_children(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hget = mocked_redis.return_value.hget

    rv = client.get(
        '/opsdb/circuit-hierarchy/children/22987',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json

    mocked_hget.assert_called_with(
        external_inventory.service_parent_to_children_key,
        "22987"
    )


def test_get_parents(mocker, client):
    mocked_redis = mocker.patch(
        "inventory_provider.routes.opsdb.db.get_redis")
    mocked_hget = mocked_redis.return_value.hget

    rv = client.get(
        '/opsdb/circuit-hierarchy/children/22987',
        headers=DEFAULT_REQUEST_HEADERS)
    assert rv.status_code == 200
    assert rv.is_json

    mocked_hget.assert_called_with(
        external_inventory.service_parent_to_children_key,
        "22987"
    )