mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-23 23:50:03 -06:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
# Copyright (C) 2016 Custodia Project Contributors - see LICENSE file
|
||
|
import pkg_resources
|
||
|
import pytest
|
||
|
|
||
|
from ipaserver.custodia.plugin import (
|
||
|
CSStore, HTTPAuthenticator, HTTPAuthorizer
|
||
|
)
|
||
|
|
||
|
|
||
|
class TestCustodiaPlugins:
|
||
|
project_name = 'ipaserver.custodia'
|
||
|
|
||
|
def get_entry_points(self, group):
|
||
|
eps = []
|
||
|
for e in pkg_resources.iter_entry_points(group):
|
||
|
if e.dist.project_name != self.project_name:
|
||
|
# only interested in our own entry points
|
||
|
continue
|
||
|
eps.append(e)
|
||
|
return eps
|
||
|
|
||
|
def assert_ep(self, ep, basecls):
|
||
|
try:
|
||
|
# backwards compatibility with old setuptools
|
||
|
if hasattr(ep, "resolve"):
|
||
|
cls = ep.resolve()
|
||
|
else:
|
||
|
cls = ep.load(require=False)
|
||
|
except Exception as e: # pylint: disable=broad-except
|
||
|
pytest.fail("Failed to load %r: %r" % (ep, e))
|
||
|
if not issubclass(cls, basecls):
|
||
|
pytest.fail("%r is not a subclass of %r" % (cls, basecls))
|
||
|
|
||
|
def test_authenticators(self):
|
||
|
for ep in self.get_entry_points('custodia.authenticators'):
|
||
|
self.assert_ep(ep, HTTPAuthenticator)
|
||
|
|
||
|
def test_authorizers(self):
|
||
|
for ep in self.get_entry_points('custodia.authorizers'):
|
||
|
self.assert_ep(ep, HTTPAuthorizer)
|
||
|
|
||
|
def test_stores(self):
|
||
|
for ep in self.get_entry_points('custodia.stores'):
|
||
|
self.assert_ep(ep, CSStore)
|