Exemple #1
0
    def test_integration(self):
        os.environ["BOOL"] = "true"
        os.environ["BOOLSTRING"] = "\"false\""
        os.environ["DICT"] = "{ \"dict\": \"value\", \"list-in-dict\": [ \"nested-list1\", \"nested-list2\" ] }"
        os.environ["FLOAT"] = "1.23"
        os.environ["INT"] = "123"
        os.environ["KEY"] = "value"
        os.environ["LIST"] = "[ \"list1\", \"list2\", { \"dict-in-list\": \"value\" } ]"
        os.environ["STRING_WITH_SPECIALS"] = "Test!@#$%^&*()-_=+[]{};:,<.>/?\\\'\"`~"
        os.environ["TUPLE"] = "(123, \"string\")"
        os.environ["COMPLEX"] = "1+2j"

        Pconf.env(
                whitelist=[
                    'KEY',
                    'INT',
                    'FLOAT',
                    'COMPLEX',
                    'LIST',
                    'DICT',
                    'TUPLE',
                    'BOOL',
                    'BOOLSTRING',
                    'STRING_WITH_SPECIALS'
                    ],
                parse_values=True,
                to_lower=True,
                convert_underscores=True
                )
        config = Pconf.get()
        self.assertEqual(config, IntegrationBase.result)
 def test_integration_yaml(self):
     self.maxDiff = None
     IntegrationBase.result.pop('complex')
     IntegrationBase.result.pop('tuple')
     Pconf.file('./tests/integration/example.yaml', encoding='yaml')
     config = Pconf.get()
     self.assertEqual(config, IntegrationBase.result)
Exemple #3
0
    def test_env_optional_params(self):
        separator = "separator"
        match = "match"
        whitelist = ["whitelist"]
        parse_values = True
        to_lower = True
        convert_underscores = True
        docker_secrets = ["secret_FILE"]
        Pconf.env(
            separator,
            match,
            whitelist,
            parse_values,
            to_lower,
            convert_underscores,
            docker_secrets,
        )

        pconf.store.env.Env.assert_called_once_with(
            separator,
            match,
            whitelist,
            parse_values,
            to_lower,
            convert_underscores,
            docker_secrets,
        )
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #4
0
    def test_argv(self):
        arg_name = TEST_ARGV["name"]
        Pconf.argv(arg_name)

        pconf.store.argv.Argv.assert_called_once_with(arg_name, None, None,
                                                      None)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #5
0
    def test_file_optional_params(self):
        encoding = "custom"
        mock_parser = MagicMock()
        Pconf.file(path=TEST_FILE_PATH, encoding=encoding, parser=mock_parser)

        pconf.store.file.File.assert_called_once_with(TEST_FILE_PATH, encoding,
                                                      mock_parser)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #6
0
 def test_integration_yaml(self):
     self.maxDiff = None
     IntegrationBase.result.pop("complex")
     IntegrationBase.result.pop("tuple")
     IntegrationBase.result.pop("secret")
     Pconf.file("./tests/integration/example.yaml", encoding="yaml")
     config = Pconf.get()
     self.assertEqual(config, IntegrationBase.result)
 def test_integration_json(self):
     self.maxDiff = None
     # Remove values that are not json encodeable
     IntegrationBase.result.pop('complex')
     IntegrationBase.result.pop('tuple')
     Pconf.file('./tests/integration/example.json', encoding='json')
     config = Pconf.get()
     self.assertEqual(config, IntegrationBase.result)
Exemple #8
0
 def test_integration_json(self):
     self.maxDiff = None
     # Remove values that are not json encodeable
     IntegrationBase.result.pop("complex")
     IntegrationBase.result.pop("tuple")
     IntegrationBase.result.pop("secret")
     Pconf.file("./tests/integration/example.json", encoding="json")
     config = Pconf.get()
     self.assertEqual(config, IntegrationBase.result)
Exemple #9
0
    def test_argv_type_optional(self):
        arg_name = TEST_ARGV["name"]
        arg_short_name = TEST_ARGV["short_name"]
        arg_type = TEST_ARGV["type"]
        arg_help = TEST_ARGV["help"]
        Pconf.argv(arg_name, arg_short_name, arg_type, arg_help)

        pconf.store.argv.Argv.assert_called_once_with(arg_name, arg_short_name,
                                                      arg_type, arg_help)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #10
0
    def test_env_get(self, mock_env):
        mocked_env = MagicMock()
        mocked_env.get.return_value = TEST_ENV_RESULT
        mock_env.return_value = mocked_env

        Pconf.env()
        results = Pconf.get()

        mocked_env.get.assert_called_once()
        for key in TEST_ENV_RESULT:
            self.assertTrue(key in results)
            self.assertEqual(results[key], TEST_ENV_RESULT[key])
Exemple #11
0
    def test_argv_get(self, mock_argv):
        mocked_argv = MagicMock()
        mocked_argv.get.return_value = TEST_ARGV_RESULT
        mock_argv.return_value = mocked_argv

        arg_name = TEST_ARGV["name"]
        Pconf.argv(arg_name)
        results = Pconf.get()

        for key in TEST_ARGV_RESULT:
            self.assertTrue(key in results)
            self.assertEqual(results[key], TEST_ARGV_RESULT[key])
Exemple #12
0
    def test_file_get(self, mock_file):
        mocked_file = MagicMock()
        mocked_file.get.return_value = TEST_FILE_RESULT
        mock_file.return_value = mocked_file

        Pconf.file(path=TEST_FILE_PATH)
        results = Pconf.get()

        mocked_file.get.assert_called_once()
        for key in TEST_FILE_RESULT:
            self.assertTrue(key in results)
            self.assertEqual(results[key], TEST_FILE_RESULT[key])
Exemple #13
0
 def setUp(self):
     Pconf.clear()
     self.TEST_FILE_PATH = "test"
     self.TEST_FILE_RESULT = {
         "file": "result",
         "overlapping": "file",
         "deep": {"stillhere": "stillhere", "overlapping": "file"},
     }
     self.TEST_ENV_RESULT = {
         "env": "result",
         "overlapping": "env",
         "deep": {"overlapping": "env"},
     }
Exemple #14
0
 def setUp(self):
     Pconf.clear()
     IntegrationBase.result = {
             'tuple': (123, 'string'),
             'int': 123,
             'float': 1.23,
             'list': ['list1', 'list2', {'dict-in-list': 'value'}],
             'complex': (1+2j),
             'bool': True,
             'key': 'value',
             'boolstring': 'false',
             'string-with-specials': 'Test!@#$%^&*()-_=+[]{};:,<.>/?\\\'"\\`~',
             'dict': {'dict': 'value', 'list-in-dict': ['nested-list1', 'nested-list2']}
             }
Exemple #15
0
    def test_env_optional_params(self):
        separator = 'separator'
        match = 'match'
        whitelist = 'whitelist'
        parse_values = True
        to_lower = True
        convert_underscores = True
        Pconf.env(separator, match, whitelist, parse_values, to_lower,
                  convert_underscores)

        pconf.store.env.Env.assert_called_once_with(separator, match,
                                                    whitelist, parse_values,
                                                    to_lower,
                                                    convert_underscores)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #16
0
 def setUp(self):
     Pconf.clear()
     self.TEST_FILE_PATH = 'test'
     self.TEST_FILE_RESULT = {
         'file': 'result',
         'overlapping': 'file',
         'deep': {
             'stillhere': 'stillhere',
             'overlapping': 'file'
         }
     }
     self.TEST_ENV_RESULT = {
         'env': 'result',
         'overlapping': 'env',
         'deep': {
             'overlapping': 'env'
         }
     }
Exemple #17
0
 def setUp(self):
     Pconf.clear()
     IntegrationBase.result = {
         "tuple": (123, "string"),
         "int": 123,
         "float": 1.23,
         "list": ["list1", "list2", {
             "dict-in-list": "value"
         }],
         "complex": (1 + 2j),
         "bool": True,
         "key": "value",
         "boolstring": "false",
         "string-with-specials": "Test!@#$%^&*()-_=+[]{};:,<.>/?\\'\"`~",
         "dict": {
             "dict": "value",
             "list-in-dict": ["nested-list1", "nested-list2"]
         },
         "secret": "secret",
     }
Exemple #18
0
    def test_backward(self, mock_file, mock_env):
        mocked_env = MagicMock()
        mocked_env.get.return_value = self.TEST_ENV_RESULT
        mock_env.return_value = mocked_env

        mocked_file = MagicMock()
        mocked_file.get.return_value = self.TEST_FILE_RESULT
        mock_file.return_value = mocked_file

        Pconf.file(self.TEST_FILE_PATH)
        Pconf.env()
        results = Pconf.get()

        expected = {
            "file": "result",
            "env": "result",
            "overlapping": "file",
            "deep": {"stillhere": "stillhere", "overlapping": "file"},
        }

        self.assertEqual(expected, results)
Exemple #19
0
    def test_integration(self):
        os.environ["BOOL"] = "true"
        os.environ["BOOLSTRING"] = '"false"'
        os.environ[
            "DICT"
        ] = '{ "dict": "value", "list-in-dict": [ "nested-list1", "nested-list2" ] }'
        os.environ["FLOAT"] = "1.23"
        os.environ["INT"] = "123"
        os.environ["KEY"] = "value"
        os.environ["LIST"] = '[ "list1", "list2", { "dict-in-list": "value" } ]'
        os.environ["STRING_WITH_SPECIALS"] = "Test!@#$%^&*()-_=+[]{};:,<.>/?\\'\"`~"
        os.environ["TUPLE"] = '(123, "string")'
        os.environ["COMPLEX"] = "1+2j"
        os.environ["SECRET_FILE"] = "./tests/integration/example_secret"

        Pconf.env(
            whitelist=[
                "KEY",
                "INT",
                "FLOAT",
                "COMPLEX",
                "LIST",
                "DICT",
                "TUPLE",
                "BOOL",
                "BOOLSTRING",
                "STRING_WITH_SPECIALS",
                "SECRET_FILE",
            ],
            parse_values=True,
            to_lower=True,
            convert_underscores=True,
            docker_secrets=["SECRET_FILE"],
        )
        config = Pconf.get()
        self.assertEqual(config, IntegrationBase.result)
Exemple #20
0
    def test_backward(self, mock_file, mock_env):
        mocked_env = MagicMock()
        mocked_env.get.return_value = self.TEST_ENV_RESULT
        mock_env.return_value = mocked_env

        mocked_file = MagicMock()
        mocked_file.get.return_value = self.TEST_FILE_RESULT
        mock_file.return_value = mocked_file

        Pconf.file(self.TEST_FILE_PATH)
        Pconf.env()
        results = Pconf.get()

        expected = {
            'file': 'result',
            'env': 'result',
            'overlapping': 'file',
            'deep': {
                'stillhere': 'stillhere',
                'overlapping': 'file'
            }
        }

        self.assertEqual(expected, results)
Exemple #21
0
 def _init(self, logger):
     """Read the configuration data from files and profile"""
     if not self.is_init:
         if self.pconf_obj:
             self.pconf_obj.clear()
             Pconf.clear()
         Pconf.env()
         dir = self.get_dir()
         env_name = self.profile if (len(self.profile)) else os.getenv(
             'PY_ENV', 'production')
         logger.debug('Configuration dir %s with env %s', dir, env_name)
         if path.isdir(dir):
             env_file = ''
             if env_name == 'production':
                 env_file = '%s/production_config.json' % dir
             elif env_name == 'development':
                 env_file = '%s/development_conf.json' % dir
             elif env_name == 'integration':
                 env_file = '%s/integration_config.json' % dir
             elif env_name == 'test':
                 env_file = '%s/test_config.json' % dir
             elif env_name == 'test_e2e':
                 env_file = '%s/test_e2e_config.json' % dir
             else:
                 raise ConfigLoadError('Unknown configuration profile: %s' %
                                       env_name)
             if not os.path.exists(env_file):
                 raise ConfigLoadError('Missing configuration file: %s' %
                                       env_file)
             Pconf.file(env_file, encoding='json')
             base_cfg_file = '%s/config.json' % dir
             if not os.path.exists(base_cfg_file):
                 raise ConfigLoadError('Missing configuration file: %s' %
                                       base_cfg_file)
             Pconf.file('%s/config.json' % dir, encoding='json')
         else:
             raise ConfigLoadError('Missing directory: %s' % dir)
         self.is_init = True
         self.pconf_obj = Pconf.get()
Exemple #22
0
    def test_env(self):
        Pconf.env()

        pconf.store.env.Env.assert_called_once_with(None, None, None, None,
                                                    None, None, None)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #23
0
    def test_file(self):
        Pconf.file(path=TEST_FILE_PATH)

        pconf.store.file.File.assert_called_once_with(TEST_FILE_PATH, None,
                                                      None)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #24
0
 def test_get_empty_dict_by_default(self):
     self.assertEqual(Pconf.get(), {})
Exemple #25
0
 def setUp(self):
     Pconf.clear()
Exemple #26
0
 def test_clear(self):
     Pconf.defaults(TEST_OVERRIDES)
     self.assertEqual(Pconf.get(), TEST_OVERRIDES)
     Pconf.clear()
     self.assertEqual(Pconf.get(), {})
Exemple #27
0
    def test_defaults(self):
        Pconf.defaults(TEST_DEFAULTS)

        pconf.store.memory.Memory.assert_called_once_with(TEST_DEFAULTS)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)
Exemple #28
0
 def test_overrides_get(self):
     Pconf.defaults(TEST_OVERRIDES)
     self.assertEqual(Pconf.get(), TEST_OVERRIDES)
Exemple #29
0
 def test_defaults_get(self):
     Pconf.defaults(TEST_DEFAULTS)
     self.assertEqual(Pconf.get(), TEST_DEFAULTS)
Exemple #30
0
    def test_overrides(self):
        Pconf.overrides(TEST_OVERRIDES)

        pconf.store.memory.Memory.assert_called_once_with(TEST_OVERRIDES)
        self.assertEqual(len(Pconf._Pconf__hierarchy), 1)