Skip to content
Snippets Groups Projects
test_poller_routes.py 1.93 KiB
import json
import jsonschema

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


def test_router_interfaces(router, client):
    interfaces_list_schema = {
        "$schema": "http://json-schema.org/draft-07/schema#",

        "definitions": {
            "circuit": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "status": {"type": "string"},
                    "type": {"type": "string"},
                    "id": {"type": "integer"}
                },
                "required": ["name", "status", "type", "id"],
                "additionalProperties": False
            }
        },

        "type": "array",
        "items": {
            "type": "object",
            "properties": {
                "circuits": {
                    "type": "array",
                    "items": {"$ref": "#/definitions/circuit"}
                },
                "bundle": {
                    "type": "array",
                    "items": {"type": "string"}
                },
                "bundle-parents": {
                    "type": "array",
                    "items": {"type": "string"}
                },
                "description": {"type": "string"},
                "name": {"type": "string"},
                "snmp-index": {"type": "integer"}
            },
            "required": [
                "circuits",
                "bundle",
                "bundle-parents",
                "description",
                "name",
                "snmp-index"],
            "additionalProperties": False
        }
    }

    rv = client.post(
        "/poller/interfaces/" + router,
        headers=DEFAULT_REQUEST_HEADERS)

    assert rv.status_code == 200
    response = json.loads(rv.data.decode("utf-8"))
    jsonschema.validate(response, interfaces_list_schema)
    assert response  # at least shouldn't be empty