Ignore:
Timestamp:
6 Apr 2017, 12:20:41 (8 years ago)
Author:
uli
Message:

Add IKofaPluggable to update local PAU.

The new plugin enables updating of sites that have
yet no XMLRPC authentication enabled.

The plugin can be removed after updating all sites.

New sites (university-instances) do not need this
plugin at all.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/tests/test_authentication.py

    r14668 r14670  
    3131from zope.securitypolicy.interfaces import IPrincipalRoleManager
    3232from waeup.kofa.testing import FunctionalTestCase, FunctionalLayer
     33from waeup.kofa.app import University
    3334from waeup.kofa.authentication import (
    3435    UserAuthenticatorPlugin, Account, KofaPrincipalInfo, FailedLoginInfo,
    3536    get_principal_role_manager, UsersPlugin, KofaXMLRPCCredentialsPlugin,
    36     setup_authentication)
     37    setup_authentication, UpdatePAUPlugin)
    3738from waeup.kofa.interfaces import (
    3839    IAuthPluginUtility, IUserAccount, IFailedLoginInfo, IKofaPrincipalInfo,
     
    368369    pass
    369370
     371
     372def get_logger():
     373    logger = logging.getLogger('waeup.test')
     374    stream = StringIO()
     375    handler = logging.StreamHandler(stream)
     376    logger.setLevel(logging.DEBUG)
     377    logger.propagate = False
     378    logger.addHandler(handler)
     379    return logger, stream
     380
     381
    370382class UsersPluginTests(unittest.TestCase):
    371383
     
    375387        self.site['users'] = grok.Container()
    376388        return
    377 
    378     def get_logger(self):
    379         logger = logging.getLogger('waeup.test')
    380         stream = StringIO()
    381         handler = logging.StreamHandler(stream)
    382         logger.setLevel(logging.DEBUG)
    383         logger.propagate = False
    384         logger.addHandler(handler)
    385         return logger, stream
    386389
    387390    def test_ifaces(self):
     
    395398        # make sure user accounts are updated properly.
    396399        plugin = UsersPlugin()
    397         logger, stream = self.get_logger()
     400        logger, stream = get_logger()
    398401        plugin.update(self.site, 'app', logger)
    399402        stream.seek(0)
    400403        self.assertEqual(stream.read(), '')
    401404        self.site['users']['bob'] = FakeUserAccount()
    402         logger, stream = self.get_logger()
     405        logger, stream = get_logger()
    403406        plugin.update(self.site, 'app', logger)
    404407        stream.seek(0)
     
    412415        self.assertTrue('attribute failed_logins added' in log_content)
    413416        return
     417
     418
     419class TestUpdatePAUPlugin(FunctionalTestCase):
     420
     421    layer = FunctionalLayer
     422
     423    def setUp(self):
     424        super(TestUpdatePAUPlugin, self).setUp()
     425        self.getRootFolder()['app'] = University()
     426        self.site = self.getRootFolder()['app']
     427
     428    def tearDown(self):
     429        clearSite()
     430        super(TestUpdatePAUPlugin, self).tearDown()
     431
     432    def get_pau(self):
     433        # the PAU is registered as a local utility in local site manager.
     434        # the name is derived from class name.
     435        pau = self.site.getSiteManager()['PluggableAuthentication']
     436        assert pau is not None
     437        return pau
     438
     439    def test_update_outdated(self):
     440        # we can update outdated sites.
     441        plugin = UpdatePAUPlugin()
     442        logger, stream = get_logger()
     443        pau = self.get_pau()
     444        pau.credentialsPlugins = ('foo', 'credentials', 'bar')
     445        plugin.update(self.site, 'xmlrpc-credentials', logger)
     446        assert 'xmlrpc-credentials' in pau.credentialsPlugins
     447        assert pau.credentialsPlugins.index('xmlrpc-credentials') == 1
     448
     449    def test_update_uptodate(self):
     450        # we cope with already updated sites.
     451        plugin = UpdatePAUPlugin()
     452        logger, stream = get_logger()
     453        pau = self.get_pau()
     454        pau.credentialsPlugins = ('foo', 'xmlrpc-credentials', 'bar')
     455        plugin.update(self.site, 'xmlrpc-credentials', logger)
     456        assert pau.credentialsPlugins.count('xmlrpc-credentials') == 1
Note: See TracChangeset for help on using the changeset viewer.