import json import jsonschema import inventory_provider DEFAULT_REQUEST_HEADERS = { "Content-type": "application/json", "Accept": ["application/json"] } ROUTER_LIST_SCHEMA = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "array", "items": {"type": "string"} } def test_flushdb(client): rv = client.post("/testing/flushdb") assert rv.status_code == 200 def test_juniper_addresses(client): rv = client.post( "/testing/juniper-server-addresses", headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 response_data = json.loads(rv.data.decode('utf-8')) jsonschema.validate(response_data, ROUTER_LIST_SCHEMA) assert len(response_data) > 0 # test data is not empty def test_circuit_tree(client, mocker): raw = [ { 'id': 1, 'name': 'root circuit', 'product': 'product A', 'speed': 'Speed A', 'status': ' Operational', 'sub-circuits': [2, 3] }, { 'id': 2, 'name': 'circuit 2', 'product': 'product A', 'speed': 'Speed A', 'status': ' Operational' }, { 'id': 3, 'name': 'circuit 3', 'product': 'product A', 'speed': 'Speed A', 'status': ' Operational' }] data = {} for v in raw: data[f'ims:circuit_hierarchy:{v["id"]}'] = \ json.dumps([v]).encode('utf-8') expected = """<pre>1 -- root circuit -- prod: product A -- spd: Speed A -- status: Operational ├── 2 -- circuit 2 -- prod: product A -- spd: Speed A -- status: Operational └── 3 -- circuit 3 -- prod: product A -- spd: Speed A -- status: Operational </pre>""" # noqa class MockedR: def get(self, key): return data.get(key, None) mr = mocker.patch.object( inventory_provider.tasks.common, "get_current_redis" ) mr.return_value = MockedR() rv = client.post( "/testing/circuit-tree/1", headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 response_data = rv.data.decode('utf-8') assert response_data == expected