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"}, "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-lambdas": { "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"} }, "geant-lambdas": { "type": "array", "items": {"$ref": "#/definitions/geant-lambdas"} }, }, "additionalProperties": False } def test_trap_metadata(client_with_mocked_data): rv = client_with_mocked_data.get( '/classifier/infinera-lambda-info/LON01-DTNX10-1/1-B-2-1-3', 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)