import json
import jsonschema
from inventory_provider.routes.poller \
    import INTERFACE_LIST_SCHEMA, INTERFACE_SPEED_LIST_SCHEMA

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


def test_router_interfaces(router, client):
    rv = client.post(
        f'/poller/interfaces/{router}',
        headers=DEFAULT_REQUEST_HEADERS)

    assert rv.status_code == 200
    response = json.loads(rv.data.decode("utf-8"))
    jsonschema.validate(response, INTERFACE_LIST_SCHEMA)
    assert response  # at least shouldn't be empty
    response_routers = {ifc['router'] for ifc in response}
    assert response_routers == {router}


def test_router_interface_speeds(router, client):
    rv = client.post(
        f'/poller/speeds/{router}',
        headers=DEFAULT_REQUEST_HEADERS)

    assert rv.status_code == 200
    response = json.loads(rv.data.decode("utf-8"))
    jsonschema.validate(response, INTERFACE_SPEED_LIST_SCHEMA)
    assert response  # at least shouldn't be empty
    response_routers = {ifc['router'] for ifc in response}
    assert response_routers == {router}