예제 #1
0
 def test_registry_base(self):
     Registry(app=self.app)
     self.app.extensions['registry']['myns'] = RegistryBase()
     self.assertRaises(NotImplementedError,
                       self.app.extensions['registry']['myns'].register)
     self.assertRaises(NotImplementedError,
                       self.app.extensions['registry']['myns'].unregister)
예제 #2
0
    def test_registration_iter(self):
        Registry(app=self.app)
        self.app.extensions['registry']['mynamespace'] = RegistryBase()
        self.app.extensions['registry']['myothernamespace'] = RegistryBase()

        assert len(self.app.extensions['registry']) == 2
        assert 'mynamespace' in self.app.extensions['registry']
        assert 'myothernamespace' in self.app.extensions['registry']

        # Double registration
        try:
            self.app.extensions['registry']['mynamespace'] = RegistryBase()
            raise AssertionError("No exception raise for double registration")
        except RegistryError:
            pass

        # Registered object
        assert isinstance(self.app.extensions['registry']['mynamespace'],
                          RegistryBase)
        assert isinstance(self.app.extensions['registry']['myothernamespace'],
                          RegistryBase)

        # Iteration
        assert set(self.app.extensions['registry']) == \
            set(['myothernamespace', 'mynamespace', ])

        for ns, r in self.app.extensions['registry'].items():
            assert ns in ['mynamespace', 'myothernamespace']

        # Removal
        myregistry = self.app.extensions['registry']['mynamespace']
        assert myregistry.namespace
        del self.app.extensions['registry']['mynamespace']
        assert myregistry.namespace is None
예제 #3
0
    def test_registration(self):
        r = Registry(app=self.app)
        r['myns'] = DictRegistry()
        r['myns'].register('key1', 'item1')
        r['myns']['key2'] = 'item2'

        self.assertRaises(
            RegistryError,
            r['myns'].register,
            'key2', 'item3'
        )

        assert len(r['myns']) == 2
        assert len(r['myns'].items()) == 2
        assert 'key2' in r['myns']
        assert 'notin' not in r['myns']
        assert list(r['myns'])
        assert r['myns'].get("key1") == "item1"
        assert r['myns'].get("key1", default='na') == "item1"
        assert r['myns'].get("unknownkey", default='na') == "na"
        assert r['myns'].get("unknownkey") is None

        assert r['myns']['key2'] == 'item2'

        r['myns'].unregister('key2')
        assert len(r['myns']) == 1
        assert 'key1' in r['myns']
        assert 'key2' not in r['myns']

        del r['myns']['key1']
        assert len(r['myns']) == 0
예제 #4
0
    def test_regsitration(self):
        Registry(app=self.app)

        self.app.extensions['registry']['myns'] = \
            EntryPointRegistry('flask_registry.test_entry')

        self.assertEqual(len(self.app.extensions['registry']['myns']), 1)
        assert 'testcase' in self.app.extensions['registry']['myns']
    def test_registration_noapp(self):
        Registry(app=self.app)

        self.app.extensions['registry']['myns'] = ModuleDiscoveryRegistry(
            'notimportant', )

        self.assertRaises(RegistryError,
                          self.app.extensions['registry']['myns'].discover)
예제 #6
0
 def test_load_modules(self):
     Registry(app=self.app)
     self.app.extensions['registry']['impns'] = ImportPathRegistry(
         initial=['flask_registry.registries.*'], load_modules=True
     )
     assert len(self.app.extensions['registry']['impns']) == 4
     assert not isinstance(
         self.app.extensions['registry']['impns'][0], six.string_types
     )
예제 #7
0
    def test_load(self):
        Registry(app=self.app)

        self.app.extensions['registry']['myns'] = \
            EntryPointRegistry('flask_registry.test_entry', load=True)

        self.assertEqual(len(self.app.extensions['registry']['myns']), 1)
        assert RegistryBase == \
            self.app.extensions['registry']['myns']['testcase'][0]
예제 #8
0
    def test_creation(self):
        Registry(app=self.app)
        self.app.extensions['registry']['modns'] = ModuleRegistry()

        moda = MockModule()

        self.app.extensions['registry']['modns'].register(moda)
        self.app.extensions['registry']['modns'].unregister(moda)
        moda.assert_called()
예제 #9
0
 def test_exclude(self):
     Registry(app=self.app)
     self.app.extensions['registry']['impns'] = ImportPathRegistry(
         initial=['flask_registry.registries.*'],
         exclude=['flask_registry.registries.pkgresources'],
     )
     assert len(self.app.extensions['registry']['impns']) == 3
     assert 'flask_registry.registries.pkgresources' not in \
         self.app.extensions['registry']['impns']
예제 #10
0
    def test_six_usage(self):
        r = Registry(app=self.app)
        r['myns'] = DictRegistry()
        r['myns'].register('key1', 'item1')
        r['myns']['key2'] = 'item2'

        assert list(six.iterkeys(r['myns'])) == list(r['myns'].keys())
        assert list(six.itervalues(r['myns'])) == list(r['myns'].values())
        assert list(six.iteritems(r['myns'])) == list(r['myns'].items())
예제 #11
0
    def test_registration(self):
        Registry(app=self.app)

        self.app.extensions['registry'].update(pathns=ImportPathRegistry(
            initial=['tests']))
        self.app.extensions['registry'].update(
            myns=PkgResourcesDirDiscoveryRegistry(
                'resources', app=self.app, registry_namespace='pathns'))

        self.assertEquals(1, len(self.app.extensions['registry']['myns']))
예제 #12
0
    def test_missing_folder(self):
        Registry(app=self.app)

        self.app.extensions['registry'].update(
            pathns=ImportPathRegistry(initial=['tests']))
        self.app.extensions['registry'].update(
            myns=PkgResourcesDirDiscoveryRegistry('non_existing_folder',
                                                  app=self.app,
                                                  registry_namespace='pathns'))

        self.assertEquals(0, len(self.app.extensions['registry']['myns']))
예제 #13
0
    def test_creation_setup(self):
        Registry(app=self.app)
        self.app.extensions['registry']['modns'] = ModuleRegistry(
            with_setup=False
        )

        moda = MockModule()

        self.app.extensions['registry']['modns'].register(moda)
        self.app.extensions['registry']['modns'].unregister(moda)
        moda.assert_not_called()
예제 #14
0
    def test_unregister(self):
        Registry(app=self.app)
        self.app.extensions['registry']['impns'] = ImportPathRegistry(
            initial=['flask_registry.registries.*']
        )

        self.assertRaises(
            NotImplementedError,
            self.app.extensions['registry']['impns'].unregister,
            'flask_registry.*'
        )
예제 #15
0
    def test_proxy(self):
        Registry(app=self.app)
        proxy = RegistryProxy('prxns', RegistryBase)

        assert 'prxns' not in self.app.extensions['registry']

        with self.app.app_context():
            self.assertRaises(NotImplementedError, proxy.register)
            assert 'prxns' in self.app.extensions['registry']
            assert isinstance(self.app.extensions['registry']['prxns'],
                              RegistryBase)
    def test_missing_module(self):
        Registry(app=self.app)

        self.app.extensions['registry'].update(
            pathns=ImportPathRegistry(initial=['flask_registry.*']),
            myns=ModuleDiscoveryRegistry('some_non_existing_module',
                                         registry_namespace='pathns'))

        with self.app.app_context():
            self.app.extensions['registry']['myns'].discover()
            assert len(self.app.extensions['registry']['myns']) == 0
예제 #17
0
    def test_namespace_injection(self):
        Registry(app=self.app)
        self.app.extensions['registry']['mynamespace'] = RegistryBase()
        assert self.app.extensions['registry']['mynamespace'].namespace == \
            'mynamespace'

        try:
            self.app.extensions['registry']['mynamespace'].namespace = "na"
            raise AssertionError("RegistryError not raised.")
        except RegistryError:
            pass
예제 #18
0
    def test_registration(self):
        Registry(app=self.app)
        self.app.extensions['registry']['impns'] = ImportPathRegistry()

        self.app.extensions['registry']['impns'].register('flask_registry')
        self.app.extensions['registry']['impns'].register(
            'flask_registry.registries.*'
        )

        assert len(self.app.extensions['registry']['impns']) == 5
        assert 'flask_registry.registries.core' in \
            self.app.extensions['registry']['impns']
    def test_broken_module(self):
        Registry(app=self.app)

        self.app.extensions['registry'].update(
            pathns=ImportPathRegistry(initial=['tests']),
            myns=ModuleDiscoveryRegistry('broken_module',
                                         registry_namespace='pathns'))

        with self.app.app_context():
            self.assertRaises(ImportError,
                              self.app.extensions['registry']['myns'].discover)
            assert len(self.app.extensions['registry']['myns']) == 0
예제 #20
0
    def test_registration(self):
        r = Registry(app=self.app)
        r['myns'] = ListRegistry()
        r['myns'].register('item1')
        r['myns'].register('item2')

        assert len(r['myns']) == 2
        assert 'item1' in r['myns']
        assert 'notin' not in r['myns']
        assert list(r['myns'])

        r['myns'].unregister('item2')
        assert len(r['myns']) == 1
        assert 'item1' in r['myns']
        assert 'item2' not in r['myns']
    def test_registration(self):
        Registry(app=self.app)

        self.app.extensions['registry']['pathns'] = \
            ImportPathRegistry(initial=['flask_registry.*'])

        self.assertEqual(3, len(self.app.extensions['registry']['pathns']))

        self.app.extensions['registry']['myns'] = \
            ModuleAutoDiscoveryRegistry('appdiscovery',
                                        app=self.app,
                                        registry_namespace='pathns')

        assert len(self.app.extensions['registry']['myns']) == 1
        from flask_registry.registries import appdiscovery
        assert self.app.extensions['registry']['myns'][0] == appdiscovery
    def test_registry_proxy(self):
        Registry(app=self.app)

        self.app.extensions['registry']['pathns'] = \
            ImportPathRegistry(initial=['flask_registry.*'])

        myns = RegistryProxy('myns',
                             ModuleAutoDiscoveryRegistry,
                             'appdiscovery',
                             registry_namespace='pathns')

        with self.app.app_context():
            self.assertEqual(3, len(self.app.extensions['registry']['pathns']))
            self.assertEqual(1, len(list(myns)))
            from flask_registry.registries import appdiscovery
            self.assertEqual(appdiscovery, myns[0])
    def test_modules_namespace(self):
        from flask_registry import registries
        Registry(app=self.app)

        self.app.extensions['registry']['pathns'] = ModuleRegistry()
        self.app.extensions['registry']['pathns'].register(registries)

        self.app.extensions['registry']['myns'] = \
            ModuleDiscoveryRegistry('appdiscovery',
                                    registry_namespace='pathns')

        with self.app.app_context():
            self.app.extensions['registry']['myns'].discover()
            assert len(self.app.extensions['registry']['myns']) == 1
            from flask_registry.registries import appdiscovery
            assert self.app.extensions['registry']['myns'][0] == appdiscovery
    def test_exclude(self):
        Registry(app=self.app)

        # Set exclude config
        self.app.config['PATH_NS_APPDISCOVERY_EXCLUDE'] = [
            'flask_registry.registries',
        ]

        self.app.extensions['registry'].update({
            'path.ns':
            ImportPathRegistry(initial=['flask_registry.*']),
            'myns':
            ModuleDiscoveryRegistry('appdiscovery',
                                    registry_namespace='path.ns')
        })

        with self.app.app_context():
            self.app.extensions['registry']['myns'].discover()
            assert len(self.app.extensions['registry']['myns']) == 0
예제 #25
0
    def test_registration(self):
        r = Registry(app=self.app)
        r['myns'] = SingletonRegistry()
        r['myns'].register('item1')
        assert r['myns'].get() == 'item1'

        self.assertRaises(
            RegistryError,
            r['myns'].register,
            'item 2'
        )

        r['myns'].unregister()
        assert r['myns'].get() is None

        self.assertRaises(
            RegistryError,
            r['myns'].unregister,
        )
    def test_registration(self):
        Registry(app=self.app)

        self.app.extensions['registry'].update(pathns=ImportPathRegistry(
            initial=['flask_registry.*']))

        self.assertEquals(3, len(self.app.extensions['registry']['pathns']))

        self.app.extensions['registry']['myns'] = \
            ModuleDiscoveryRegistry(
                'appdiscovery',
                registry_namespace='pathns')

        with self.app.app_context():
            self.app.extensions['registry']['myns'].discover()
            assert len(self.app.extensions['registry']['myns']) == 1
            from flask_registry.registries import appdiscovery
            assert self.app.extensions['registry']['myns'][0] == appdiscovery

        self.app.extensions['registry']['myns'].discover(app=self.app)
    def test_syntaxerror_module(self):
        Registry(app=self.app)

        self.app.extensions['registry'].update(
            pathns=ImportPathRegistry(initial=['tests']),
            myns=ModuleDiscoveryRegistry('syntaxerror_module',
                                         registry_namespace='pathns'))

        with self.app.app_context():
            self.assertRaises(SyntaxError,
                              self.app.extensions['registry']['myns'].discover)
            assert len(self.app.extensions['registry']['myns']) == 0

        # Silence the error
        self.app.extensions['registry']['myns_silent'] = \
            ModuleDiscoveryRegistry('syntaxerror_module',
                                    registry_namespace='pathns',
                                    silent=True)

        with self.app.app_context():
            self.app.extensions['registry']['myns_silent'].discover()
            assert len(self.app.extensions['registry']['myns_silent']) == 0
    def test_proxy_ns(self):
        Registry(app=self.app)

        proxy = RegistryProxy('pathns',
                              ImportPathRegistry,
                              initial=['flask_registry.*'])

        with self.app.app_context():
            assert 'pathns' not in self.app.extensions['registry']

            self.app.extensions['registry']['myns'] = \
                ModuleDiscoveryRegistry('appdiscovery',
                                        registry_namespace=proxy)

            assert 'pathns' in self.app.extensions['registry']
            self.assertEqual(3, len(self.app.extensions['registry']['pathns']))

            self.app.extensions['registry']['myns'].discover()

            assert len(self.app.extensions['registry']['myns']) == 1
            from flask_registry.registries import appdiscovery
            assert self.app.extensions['registry']['myns'][0] == appdiscovery
예제 #29
0
 def test_creation_init(self):
     assert 'registry' not in self.app.extensions
     r = Registry()
     r.init_app(app=self.app)
     assert isinstance(self.app.extensions['registry'], Registry)
예제 #30
0
 def test_double_creation(self):
     Registry(app=self.app)
     self.assertRaises(RegistryError, Registry, app=self.app)
예제 #31
0
 def test_creation_init(self):
     assert 'registry' not in self.app.extensions
     r = Registry()
     r.init_app(app=self.app)
     assert isinstance(self.app.extensions['registry'], Registry)