diff options
-rwxr-xr-x | check | 3 | ||||
-rw-r--r-- | kerbana/__init__.py | 32 | ||||
-rw-r--r-- | kerbana/config.py | 12 | ||||
-rw-r--r-- | tests/test_app.py | 14 |
4 files changed, 61 insertions, 0 deletions
@@ -37,6 +37,9 @@ case $SUBCMD in "static") bandit --recursive --number=3 -lll -iii . ;; + "run") + flask --app kerbana --debug run + ;; *) echo "No such subcommand $SUBCMD" ;; diff --git a/kerbana/__init__.py b/kerbana/__init__.py new file mode 100644 index 0000000..920e730 --- /dev/null +++ b/kerbana/__init__.py @@ -0,0 +1,32 @@ +from typing import Optional + +import flask +import tomllib + +from . import config + + +def create_app(test_config: Optional[config.Config] = None): + app = flask.Flask(__name__, instance_relative_config=True) + + app.config.from_object(config.DefaultConfig) + + if test_config is None: + app.config.from_file( + "/etc/kerbana/kerbana.toml", + load=tomllib.load, + ) + app.config.from_file( + "kerbana.toml", + load=tomllib.load, + ) + app.config.from_envvar("KERBANA_CONFIG") + app.config.from_prefixed_env(prefix="KERBANA_") + else: + app.config.from_object(test_config) + + @app.route('/') + def root(): + return "Hello World!" + + return app diff --git a/kerbana/config.py b/kerbana/config.py new file mode 100644 index 0000000..2ccaabc --- /dev/null +++ b/kerbana/config.py @@ -0,0 +1,12 @@ +# Default configuration values + +class Config: + SECRET_KEY = "dev" + + +class DefaultConfig(Config): + pass + + +class TestConfig(Config): + TESTING = True diff --git a/tests/test_app.py b/tests/test_app.py new file mode 100644 index 0000000..6d96fbb --- /dev/null +++ b/tests/test_app.py @@ -0,0 +1,14 @@ +import unittest + +from kerbana import config, create_app + + +class TestBase(unittest.TestCase): + def setUp(self): + test_config = config.TestConfig() + self.app = create_app(test_config) + self.client = self.app.test_client() + + def test_root(self): + res = self.client.get("/") + self.assertEqual("Hello World!", res.data.decode()) |