| # -*- coding: utf-8 -*- |
| import webapp2 |
| |
| from webapp2_extras import config as app_config |
| |
| import test_base |
| |
| |
| class TestConfig(test_base.BaseTestCase): |
| def tearDown(self): |
| pass |
| |
| def test_get(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }}) |
| |
| self.assertEqual(config.get('foo'), { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }) |
| |
| self.assertEqual(config.get('bar'), {}) |
| |
| def test_get_existing_keys(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }}) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'baz') |
| self.assertEqual(config.get_config('foo', 'doo'), 'ding') |
| |
| def test_get_existing_keys_from_default(self): |
| config = app_config.Config({}, {'foo': { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }}) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'baz') |
| self.assertEqual(config.get_config('foo', 'doo'), 'ding') |
| |
| def test_get_non_existing_keys(self): |
| config = app_config.Config() |
| |
| self.assertRaises(KeyError, config.get_config, 'foo', 'bar') |
| |
| def test_get_dict_existing_keys(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }}) |
| |
| self.assertEqual(config.get_config('foo'), { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }) |
| |
| def test_get_dict_non_existing_keys(self): |
| config = app_config.Config() |
| |
| self.assertRaises(KeyError, config.get_config, 'bar') |
| |
| def test_get_with_default(self): |
| config = app_config.Config() |
| |
| self.assertRaises(KeyError, config.get_config, 'foo', 'bar', 'ooops') |
| self.assertRaises(KeyError, config.get_config, 'foo', 'doo', 'wooo') |
| |
| def test_get_with_default_and_none(self): |
| config = app_config.Config({'foo': { |
| 'bar': None, |
| }}) |
| |
| self.assertEqual(config.get_config('foo', 'bar', 'ooops'), None) |
| |
| def test_update(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }}) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'baz') |
| self.assertEqual(config.get_config('foo', 'doo'), 'ding') |
| |
| config.update('foo', {'bar': 'other'}) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'other') |
| self.assertEqual(config.get_config('foo', 'doo'), 'ding') |
| |
| def test_setdefault(self): |
| config = app_config.Config() |
| |
| self.assertRaises(KeyError, config.get_config, 'foo') |
| |
| config.setdefault('foo', { |
| 'bar': 'baz', |
| 'doo': 'ding', |
| }) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'baz') |
| self.assertEqual(config.get_config('foo', 'doo'), 'ding') |
| |
| def test_setdefault2(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| }}) |
| |
| self.assertEqual(config.get_config('foo'), { |
| 'bar': 'baz', |
| }) |
| |
| config.setdefault('foo', { |
| 'bar': 'wooo', |
| 'doo': 'ding', |
| }) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'baz') |
| self.assertEqual(config.get_config('foo', 'doo'), 'ding') |
| |
| def test_setitem(self): |
| config = app_config.Config() |
| config['foo'] = {'bar': 'baz'} |
| |
| self.assertEqual(config, {'foo': {'bar': 'baz'}}) |
| self.assertEqual(config['foo'], {'bar': 'baz'}) |
| |
| def test_init_no_dict_values(self): |
| self.assertRaises(AssertionError, app_config.Config, {'foo': 'bar'}) |
| self.assertRaises(AssertionError, app_config.Config, {'foo': None}) |
| self.assertRaises(AssertionError, app_config.Config, 'foo') |
| |
| def test_init_no_dict_default(self): |
| self.assertRaises(AssertionError, app_config.Config, {}, {'foo': 'bar'}) |
| self.assertRaises(AssertionError, app_config.Config, {}, {'foo': None}) |
| self.assertRaises(AssertionError, app_config.Config, {}, 'foo') |
| |
| def test_update_no_dict_values(self): |
| config = app_config.Config() |
| |
| self.assertRaises(AssertionError, config.update, {'foo': 'bar'}, 'baz') |
| self.assertRaises(AssertionError, config.update, {'foo': None}, 'baz') |
| self.assertRaises(AssertionError, config.update, 'foo', 'bar') |
| |
| def test_setdefault_no_dict_values(self): |
| config = app_config.Config() |
| |
| self.assertRaises(AssertionError, config.setdefault, 'foo', 'bar') |
| self.assertRaises(AssertionError, config.setdefault, 'foo', None) |
| |
| def test_setitem_no_dict_values(self): |
| config = app_config.Config() |
| |
| def setitem(key, value): |
| config[key] = value |
| return config |
| |
| self.assertRaises(AssertionError, setitem, 'foo', 'bar') |
| self.assertRaises(AssertionError, setitem, 'foo', None) |
| |
| |
| class TestLoadConfig(test_base.BaseTestCase): |
| def tearDown(self): |
| pass |
| |
| def test_default_config(self): |
| config = app_config.Config() |
| |
| from resources.template import default_config as template_config |
| from resources.i18n import default_config as i18n_config |
| |
| self.assertEqual(config.get_config('resources.template', 'templates_dir'), template_config['templates_dir']) |
| self.assertEqual(config.get_config('resources.i18n', 'locale'), i18n_config['locale']) |
| self.assertEqual(config.get_config('resources.i18n', 'timezone'), i18n_config['timezone']) |
| |
| def test_default_config_with_non_existing_key(self): |
| config = app_config.Config() |
| |
| from resources.i18n import default_config as i18n_config |
| |
| # In the first time the module config will be loaded normally. |
| self.assertEqual(config.get_config('resources.i18n', 'locale'), i18n_config['locale']) |
| |
| # In the second time it won't be loaded, but won't find the value and then use the default. |
| self.assertEqual(config.get_config('resources.i18n', 'i_dont_exist', 'foo'), 'foo') |
| |
| def test_override_config(self): |
| config = app_config.Config({ |
| 'resources.template': { |
| 'templates_dir': 'apps/templates' |
| }, |
| 'resources.i18n': { |
| 'locale': 'pt_BR', |
| 'timezone': 'America/Sao_Paulo', |
| }, |
| }) |
| |
| self.assertEqual(config.get_config('resources.template', 'templates_dir'), 'apps/templates') |
| self.assertEqual(config.get_config('resources.i18n', 'locale'), 'pt_BR') |
| self.assertEqual(config.get_config('resources.i18n', 'timezone'), 'America/Sao_Paulo') |
| |
| def test_override_config2(self): |
| config = app_config.Config({ |
| 'resources.i18n': { |
| 'timezone': 'America/Sao_Paulo', |
| }, |
| }) |
| |
| self.assertEqual(config.get_config('resources.i18n', 'locale'), 'en_US') |
| self.assertEqual(config.get_config('resources.i18n', 'timezone'), 'America/Sao_Paulo') |
| |
| def test_get(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| }}) |
| |
| self.assertEqual(config.get_config('foo', 'bar'), 'baz') |
| |
| def test_get_with_default(self): |
| config = app_config.Config() |
| |
| self.assertEqual(config.get_config('resources.i18n', 'bar', 'baz'), 'baz') |
| |
| def test_get_with_default_and_none(self): |
| config = app_config.Config({'foo': { |
| 'bar': None, |
| }}) |
| |
| self.assertEqual(config.get_config('foo', 'bar', 'ooops'), None) |
| |
| def test_get_with_default_and_module_load(self): |
| config = app_config.Config() |
| self.assertEqual(config.get_config('resources.i18n', 'locale'), 'en_US') |
| self.assertEqual(config.get_config('resources.i18n', 'locale', 'foo'), 'en_US') |
| |
| def test_required_config(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config.get_config, 'resources.i18n', 'foo') |
| |
| def test_missing_module(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config.get_config, 'i_dont_exist', 'i_dont_exist') |
| |
| def test_missing_module2(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config.get_config, 'i_dont_exist') |
| |
| def test_missing_key(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config.get_config, 'resources.i18n', 'i_dont_exist') |
| |
| def test_missing_default_config(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config.get_config, 'tipfy', 'foo') |
| |
| |
| class TestLoadConfigGetItem(test_base.BaseTestCase): |
| def tearDown(self): |
| pass |
| |
| def test_default_config(self): |
| config = app_config.Config() |
| |
| from resources.template import default_config as template_config |
| from resources.i18n import default_config as i18n_config |
| |
| self.assertEqual(config['resources.template']['templates_dir'], template_config['templates_dir']) |
| self.assertEqual(config['resources.i18n']['locale'], i18n_config['locale']) |
| self.assertEqual(config['resources.i18n']['timezone'], i18n_config['timezone']) |
| |
| def test_default_config_with_non_existing_key(self): |
| config = app_config.Config() |
| |
| from resources.i18n import default_config as i18n_config |
| |
| # In the first time the module config will be loaded normally. |
| self.assertEqual(config['resources.i18n']['locale'], i18n_config['locale']) |
| |
| # In the second time it won't be loaded, but won't find the value and then use the default. |
| self.assertEqual(config['resources.i18n'].get('i_dont_exist', 'foo'), 'foo') |
| |
| def test_override_config(self): |
| config = app_config.Config({ |
| 'resources.template': { |
| 'templates_dir': 'apps/templates' |
| }, |
| 'resources.i18n': { |
| 'locale': 'pt_BR', |
| 'timezone': 'America/Sao_Paulo', |
| }, |
| }) |
| |
| self.assertEqual(config['resources.template']['templates_dir'], 'apps/templates') |
| self.assertEqual(config['resources.i18n']['locale'], 'pt_BR') |
| self.assertEqual(config['resources.i18n']['timezone'], 'America/Sao_Paulo') |
| |
| def test_override_config2(self): |
| config = app_config.Config({ |
| 'resources.i18n': { |
| 'timezone': 'America/Sao_Paulo', |
| }, |
| }) |
| |
| self.assertEqual(config['resources.i18n']['locale'], 'en_US') |
| self.assertEqual(config['resources.i18n']['timezone'], 'America/Sao_Paulo') |
| |
| def test_get(self): |
| config = app_config.Config({'foo': { |
| 'bar': 'baz', |
| }}) |
| |
| self.assertEqual(config['foo']['bar'], 'baz') |
| |
| def test_get_with_default(self): |
| config = app_config.Config() |
| |
| self.assertEqual(config['resources.i18n'].get('bar', 'baz'), 'baz') |
| |
| def test_get_with_default_and_none(self): |
| config = app_config.Config({'foo': { |
| 'bar': None, |
| }}) |
| |
| self.assertEqual(config['foo'].get('bar', 'ooops'), None) |
| |
| def test_get_with_default_and_module_load(self): |
| config = app_config.Config() |
| self.assertEqual(config['resources.i18n']['locale'], 'en_US') |
| self.assertEqual(config['resources.i18n'].get('locale', 'foo'), 'en_US') |
| |
| def test_required_config(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config['resources.i18n'].__getitem__, 'foo') |
| self.assertRaises(KeyError, config['resources.i18n'].__getitem__, 'required') |
| |
| def test_missing_module(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config.__getitem__, 'i_dont_exist') |
| |
| def test_missing_key(self): |
| config = app_config.Config() |
| self.assertRaises(KeyError, config['resources.i18n'].__getitem__, 'i_dont_exist') |
| |
| |
| if __name__ == '__main__': |
| test_base.main() |