import json import jsonschema DEFAULT_REQUEST_HEADERS = { "Content-type": "application/json", "Accept": ["application/json"] } INFINERA_LINK_METADATA = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "definitions": { "service-info": { "type": "object", "properties": { "id": {"type": "integer"}, "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, "circuit_type": { "type": "string", "enum": ["path", "service", "l2circuit"] }, "service_type": {"type": "string"}, "project": {"type": "string"}, "pop_name": {"type": "string"}, "pop_abbreviation": {"type": "string"}, "other_end_pop_name": {"type": "string"}, "other_end_pop_abbreviation": {"type": "string"}, "equipment": {"type": "string"}, "other_end_equipment": {"type": "string"}, "port": {"type": "string"}, "other_end_port": {"type": "string"}, "logical_unit": { "oneOf": [ {"type": "integer"}, {"type": "string", "maxLength": 0} ] }, "other_end_logical_unit": { "oneOf": [ {"type": "integer"}, {"type": "string", "maxLength": 0} ] }, "manufacturer": { "type": "string", "enum": ["juniper", "coriant", "infinera", "cisco", "hewlett packard", "corsa", "graham smith uk ltd", "unknown", ""] }, "card_id": {"type": "string"}, "other_end_card_id": {"type": "string"}, "interface_name": {"type": "string"}, "other_end_interface_name": {"type": "string"} }, "additionalProperties": False }, "geant-lambda": { "type": "object", "properties": { "id": {"type": "integer"}, "name": {"type": "string"}, "status": { "type": "string", "enum": ["operational", "installed", "planned", "ordered"] }, }, "additionalProperties": False } }, "type": "object", "properties": { "services": { "type": "array", "items": {"$ref": "#/definitions/service-info"} }, "related-services": { "type": "array", "items": {"$ref": "#/definitions/service-info"} }, "geant-lambda": { "$ref": "#/definitions/geant-lambda" }, }, "additionalProperties": False } def test_trap_metadata(client): rv = client.get( '/classifier/infinera-lambda-info/' 'LON2-DTNX10-1/1-A-2-1-4/gen-lon3_LHC_CERN-JANET_09013', headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response_data = json.loads(rv.data.decode('utf-8')) jsonschema.validate(response_data, INFINERA_LINK_METADATA)