diff --git a/brian_polling_manager/api.py b/brian_polling_manager/api.py
index 9e7fbdade88ddf6e87127330aabace52bd55f8d2..424813f44665e73976f4681cf2b570d6d083c212 100644
--- a/brian_polling_manager/api.py
+++ b/brian_polling_manager/api.py
@@ -23,7 +23,7 @@ import pkg_resources
from flask import Blueprint, current_app, request, Response, jsonify
from brian_polling_manager import CONFIG_KEY
-from brian_polling_manager.main import refresh
+from brian_polling_manager import main
routes = Blueprint("api-routes", __name__)
logger = logging.getLogger(__name__)
@@ -159,5 +159,5 @@ def update():
:return:
"""
- response = refresh(config=current_app.config[CONFIG_KEY])
+ response = main.refresh(config=current_app.config[CONFIG_KEY])
return jsonify(response)
diff --git a/test/conftest.py b/test/conftest.py
index 9244fd8cbceda2598cc8e7192a1cb1e9706e6d25..2553e8fcafecbeb13bf967ab4ae92e28ebe5f704 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -55,6 +55,14 @@ def config():
}
+@pytest.fixture
+def config_filename(config):
+ with tempfile.NamedTemporaryFile(mode='w') as f:
+ f.write(json.dumps(config))
+ f.flush()
+ yield f.name
+
+
@pytest.fixture
def mocked_sensu():
diff --git a/test/test_api.py b/test/test_api.py
new file mode 100644
index 0000000000000000000000000000000000000000..c8df1ff2f1efebcd02baad0b4b6bd46d2274afd5
--- /dev/null
+++ b/test/test_api.py
@@ -0,0 +1,38 @@
+import json
+import os
+
+import jsonschema
+import pytest
+import responses
+
+import brian_polling_manager
+from brian_polling_manager.api import VERSION_SCHEMA
+from brian_polling_manager.main import REFRESH_RESULT_SCHEMA
+
+
+@pytest.fixture
+def client(config_filename, mocked_sensu, mocked_inventory):
+ os.environ['CONFIG_FILENAME'] = config_filename
+ with brian_polling_manager.create_app().test_client() as c:
+ yield c
+
+
+def test_version(client):
+ rv = client.get(
+ '/api/version',
+ headers={'Accept': ['application/json']})
+ assert rv.status_code == 200
+ assert rv.is_json
+ response_data = json.loads(rv.data.decode('utf-8'))
+ jsonschema.validate(response_data, VERSION_SCHEMA)
+
+@responses.activate
+def test_update(client):
+ rv = client.get(
+ '/api/update',
+ headers={'Accept': ['application/json']})
+ assert rv.status_code == 200
+ assert rv.is_json
+ response_data = json.loads(rv.data.decode('utf-8'))
+ jsonschema.validate(response_data, REFRESH_RESULT_SCHEMA)
+
diff --git a/test/test_e2e.py b/test/test_e2e.py
index 11b6d741cbc43f5249be9e1b0b870422ca7dbf6b..ae130cf69a2aafde621a1a858f0413f806e65c62 100644
--- a/test/test_e2e.py
+++ b/test/test_e2e.py
@@ -8,15 +8,11 @@ from brian_polling_manager import main
@responses.activate
-def test_run_flashtest(config, mocked_sensu, mocked_inventory):
+def test_run_flashtest(config_filename, mocked_sensu, mocked_inventory):
- with tempfile.NamedTemporaryFile(mode='w') as f:
- f.write(json.dumps(config))
- f.flush()
-
- runner = CliRunner()
- result = runner.invoke(
- main.cli,
- ['--config', f.name, '--force']
- )
- assert result.exit_code == 0
+ runner = CliRunner()
+ result = runner.invoke(
+ main.cli,
+ ['--config', config_filename, '--force']
+ )
+ assert result.exit_code == 0