Skip to content
Snippets Groups Projects
Commit 9b0ab276 authored by Robert Latta's avatar Robert Latta
Browse files

Route test for alarmsdb interface status

parent 972c9e6c
No related branches found
No related tags found
No related merge requests found
import json
import jsonschema
import os
import pytest
import tempfile
import inventory_provider
DEFAULT_REQUEST_HEADERS = {
"Content-type": "application/json",
"Accept": ["application/json"]
}
def data_config_filename(tmp_dir_name):
config = {
"alarms-db": {
"hostname": "xxxxxx",
"dbname": "xxxxxx",
"username": "xxxxxx",
"password": "xxxxxx"
},
"ops-db": {
"hostname": "xxxxxxx.yyyyy.zzz",
"dbname": "xxxxxx",
"username": "xxxxxx",
"password": "xxxxxxxx"
},
"oid_list.conf": os.path.join(
tmp_dir_name,
"oid_list.conf"),
"routers_community.conf": os.path.join(
tmp_dir_name,
"routers_community.conf"),
"ssh": {
"private-key": "private-key-filename",
"known-hosts": "known-hosts=filename"
},
"redis": {
"hostname": "xxxxxx",
"port": 0
}
}
with open(config["oid_list.conf"], "w") as f:
f.write("")
with open(config["routers_community.conf"], "w") as f:
f.write("")
filename = os.path.join(tmp_dir_name, "config.json")
with open(filename, "w") as f:
f.write(json.dumps(config))
return filename
@pytest.fixture
def app_config():
with tempfile.TemporaryDirectory() as tmpdir:
app_config_filename = os.path.join(tmpdir, "app.config")
with open(app_config_filename, "w") as f:
f.write("%s = '%s'\n" % (
"INVENTORY_PROVIDER_CONFIG_FILENAME",
data_config_filename(tmpdir)))
yield app_config_filename
@pytest.fixture
def client(app_config):
os.environ["SETTINGS_FILENAME"] = app_config
with inventory_provider.create_app().test_client() as c:
yield c
def test_get_interface_status(mocker, client):
mocked_conn = mocker.patch('inventory_provider.routes.alarmsdb'
'.alarmsdb.connection')
mocked_conn.return_value.__enter__.return_value = None
mocked_inteface_status = mocker.patch(
'inventory_provider.routes.alarmsdb.'
'alarmsdb.get_last_known_interface_status')
mocked_inteface_status.return_value = "up"
rv = client.get(
'/alarmsdb/interface-status?'
'equipment=mx1.lon.uk.geant.net&interface=xe-1/2/2',
headers=DEFAULT_REQUEST_HEADERS)
interfaces_list_schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"status": {
"type": "string",
}
}
}
response = json.loads(rv.data.decode("utf-8"))
jsonschema.validate(response, interfaces_list_schema)
assert response == {"status": "up"}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment