Пример #1
0
    def test_attribute_access(self):
        """access ConfigDict keys as attributes"""
        cd = ConfigDict()

        cd['x'] = 1
        self.assertEquals(cd.x, 1)

        cd.y = 2
        self.assertEquals(cd['y'], 2)
Пример #2
0
    def setUp(self):
        self.cd = ConfigDict()
        self.conf_file1 = NamedTemporaryFile(suffix='.ini')
        self.conf_filename1 = self.conf_file1.name

        self.conf_file2 = NamedTemporaryFile(suffix='.ini')
        self.conf_filename2 = self.conf_file2.name

        self.conf_file1.write(
            textwrap.dedent("""
            [whoa]
            foo = bar

            """))

        self.conf_file2.write(
            textwrap.dedent("""
            [whoa]
            foo = BAZ!

            """))

        self.conf_file1.flush()
        self.conf_file2.flush()
Пример #3
0
    def test_schema(self):
        """test/merge a schema to loaded configuration"""

        # schema for what the 'some_service' configuration
        # ought to look like.
        schema = Schema({
            'some_service': {
                'host':
                basestring,
                'port':
                Coerce(int),
                Required('pool_size', default=5):
                All(Coerce(int), Range(min=1, max=20)),
                'credentials': {
                    'username': basestring,
                    'password': basestring
                }
            }
        })

        cd = ConfigDict()
        cd.register_trigger(SchemaTrigger(schema))

        cd.merge_dict({
            'some_service': {
                'host': 'xyz',
                'port': 123,
                'credentials': {
                    'username': '******',
                    'password': '******'
                }
            }
        })
        cd.configure()

        self.assertEquals(cd.some_service.host, 'xyz')
        self.assertEquals(cd.some_service.port, 123)
        self.assertEquals(cd.some_service.pool_size, 5)
        self.assertEquals(cd.some_service.credentials.username, 'foo')
        self.assertEquals(cd.some_service.credentials.password, 'bar')

        # integer coersion should take care of '123' instead of 123
        cd = ConfigDict()
        cd.register_trigger(SchemaTrigger(schema))
        cd.merge_dict({
            'some_service': {
                'host': 'xyz',
                'port': '123',
                'credentials': {
                    'username': '******',
                    'password': '******'
                }
            }
        })
        cd.configure()

        self.assertEquals(cd.some_service.host, 'xyz')
        self.assertEquals(cd.some_service.port, 123)
        self.assertEquals(cd.some_service.pool_size, 5)
        self.assertEquals(cd.some_service.credentials.username, 'foo')
        self.assertEquals(cd.some_service.credentials.password, 'bar')

        cd = ConfigDict()
        cd.register_trigger(SchemaTrigger(schema))
        cd.merge_dict({
            'some_service': {
                'host': 'xyz',
                'port': 123,
                'pool_size': 21,
                'credentials': {
                    'username': '******',
                    'password': '******'
                }
            }
        })

        # not valid -- pool_size out of range
        with self.assertRaises(MultipleInvalid):
            cd.configure()