def test_resolve_provider_type_invalid(): # unknown type with pytest.raises(ValueError): assert resolve_provider_type(DummyBase, 'unknown') # non-unique type with pytest.raises(RuntimeError): assert resolve_provider_type(DummyBase, 'multi') # invalid type with pytest.raises(TypeError): assert resolve_provider_type(DummyBase, 'fake')
def _create_providers(self, key, base): """Instantiates all providers :param key: The key to insert into the config option name ``MULTIPASS_*_PROVIDERS`` :param base: The base class of the provider type. """ registry = self.provider_registry[AuthProvider if key == 'AUTH' else IdentityProvider] providers = {} provider_classes = set() for name, settings in iteritems(current_app.config['MULTIPASS_{}_PROVIDERS'.format(key)]): settings = settings.copy() cls = resolve_provider_type(base, settings.pop('type'), registry) if not cls.multi_instance and cls in provider_classes: raise RuntimeError('Provider does not support multiple instances: ' + cls.__name__) providers[name] = cls(self, name, settings) provider_classes.add(cls) return providers
def test_resolve_provider_type(): assert resolve_provider_type(DummyBase, 'dummy') is Dummy
def test_resolve_provider_type_class(): assert resolve_provider_type(DummyBase, Dummy) is Dummy with pytest.raises(TypeError): resolve_provider_type(DummyBase, FakeDummy)