diff --git a/tests/test_config/sample_apps/sample_app/__init__.py b/tests/test_config/sample_apps/sample_app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_config/sample_apps/sample_app/app.py b/tests/test_config/sample_apps/sample_app/app.py new file mode 100644 index 0000000..dcb81fd --- /dev/null +++ b/tests/test_config/sample_apps/sample_app/app.py @@ -0,0 +1,3 @@ +def setup_app(config): + assert config.foo.sample_key == True + return 'DEPLOYED!' diff --git a/tests/test_config/sample_apps/sample_app_config.py b/tests/test_config/sample_apps/sample_app_config.py new file mode 100644 index 0000000..63b8d7f --- /dev/null +++ b/tests/test_config/sample_apps/sample_app_config.py @@ -0,0 +1,9 @@ +import sample_app + +app = { + 'modules': [sample_app] +} + +foo = { + 'sample_key': True +} diff --git a/tests/test_config/sample_apps/sample_app_config_missing.py b/tests/test_config/sample_apps/sample_app_config_missing.py new file mode 100644 index 0000000..77dae46 --- /dev/null +++ b/tests/test_config/sample_apps/sample_app_config_missing.py @@ -0,0 +1,9 @@ +import sample_app_missing + +app = { + 'modules': [sample_app_missing] +} + +foo = { + 'sample_key': True +} diff --git a/tests/test_config/sample_apps/sample_app_config_missing_app.py b/tests/test_config/sample_apps/sample_app_config_missing_app.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_config/sample_apps/sample_app_missing/__init__.py b/tests/test_config/sample_apps/sample_app_missing/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_config/sample_apps/sample_app_missing_app/__init__.py b/tests/test_config/sample_apps/sample_app_missing_app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_config/sample_apps/sample_app_missing_app/app.py b/tests/test_config/sample_apps/sample_app_missing_app/app.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_deploy.py b/tests/test_deploy.py new file mode 100644 index 0000000..8978fde --- /dev/null +++ b/tests/test_deploy.py @@ -0,0 +1,61 @@ +from pecan.deploy import deploy +from unittest import TestCase + +import pytest +import os +import sys + + +class TestDeploy(TestCase): + + def setUp(self): + test_config_d = os.path.join(os.path.dirname(__file__), 'test_config', 'sample_apps') + + if test_config_d not in sys.path: + sys.path.append(test_config_d) + + def test_module_lookup(self): + """ + 1. A config file has: + app { 'modules': [valid_module] } + 2. The module, `valid_module` has an app.py that defines a `def setup.py` + """ + test_config_file = os.path.join(os.path.dirname(__file__), 'test_config', 'sample_apps', 'sample_app_config.py') + assert deploy(test_config_file) == 'DEPLOYED!' + + def test_module_lookup_find_best_match(self): + """ + 1. A config file has: + app { 'modules': [invalid_module, valid_module] } + 2. The module, `valid_module` has an app.py that defines a `def setup_app` + """ + test_config_file = os.path.join(os.path.dirname(__file__), 'test_config', 'sample_apps', 'sample_app_config.py') + assert deploy(test_config_file) == 'DEPLOYED!' + + def test_missing_app_file_lookup(self): + """ + 1. A config file has: + app { 'modules': [valid_module] } + 2. The module has no `app.py` file. + """ + test_config_file = os.path.join(os.path.dirname(__file__), 'test_config', 'sample_apps', 'sample_app_config_missing.py') + self.assertRaisesRegexp( + Exception, + 'No app.setup_app found in any of the configured app.modules', + deploy, + test_config_file + ) + + def test_missing_setup_app(self): + """ + 1. A config file has: + app { 'modules': [valid_module] } + 2. The module, `valid_module` has an `app.py` that contains no `def setup_app` + """ + test_config_file = os.path.join(os.path.dirname(__file__), 'test_config', 'sample_apps', 'sample_app_config_missing_app.py') + self.assertRaisesRegexp( + Exception, + 'No app.setup_app found in any of the configured app.modules', + deploy, + test_config_file + )