diff --git a/test/conftest.py b/test/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..e4a5dd3903c47b58ec91284b99eda6403f3aaf4d --- /dev/null +++ b/test/conftest.py @@ -0,0 +1,46 @@ +import json +import os +import tempfile + +import pytest +from fastapi.testclient import TestClient + +import larp + + +@pytest.fixture +def good_config_data(): + return { + 'collection-uri': 'organisation.collection' + } + + +@pytest.fixture +def bad_config_data(): + return { + 'bogus-key': 'nothing useful' + } + + +@pytest.fixture +def config_file(good_config_data): + with tempfile.NamedTemporaryFile(mode='w') as f: + f.write(json.dumps(good_config_data)) + f.flush() + os.environ['SETTINGS_FILENAME'] = f.name + yield f.name + + +@pytest.fixture +def invalid_config_file(bad_config_data): + with tempfile.NamedTemporaryFile(mode='w') as f: + f.write(json.dumps(bad_config_data)) + f.flush() + os.environ['SETTINGS_FILENAME'] = f.name + yield f.name + + +@pytest.fixture +def client(config_file): + app = larp.create_app() + yield TestClient(app) # wait here until calling context ends diff --git a/test/test_config.py b/test/test_config.py new file mode 100644 index 0000000000000000000000000000000000000000..145fdd9d1d79be83ec1dab4dcfea2df256026d03 --- /dev/null +++ b/test/test_config.py @@ -0,0 +1,26 @@ +import io +import json +import pytest + +from pydantic.error_wrappers import ValidationError + +from larp import config + + +def test_config_with_file(config_file): + params = config.load() + assert params + + +def test_config_correct(good_config_data): + with io.StringIO(json.dumps(good_config_data)) as f: + f.seek(0) # rewind file position to the beginning + params = config.load_from_file(f) + assert params + + +def test_config_incorrect(bad_config_data): + with io.StringIO(json.dumps(bad_config_data)) as f: + f.seek(0) + with pytest.raises(Exception, match="'collection-uri' is a required property"): + config.load_from_file(f)