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