Пример #1
0
 def __init__(self, props, cfg):
     context = LDAPNode(name=cfg.baseDN, props=props)
     context.search_filter = cfg.queryFilter
     context.search_scope = int(cfg.scope)
     context.child_defaults = dict()
     context.child_defaults['objectClass'] = cfg.objectClasses
     context.child_defaults.update(cfg.defaults)
     for oc in cfg.objectClasses:
         for key, val in creation_defaults.get(oc, dict()).items():
             if key not in context.child_defaults:
                 context.child_defaults[key] = val
     # if cfg.member_relation:
     #     context.search_relation = cfg.member_relation
     self._rdn_attr = cfg.attrmap['rdn']
     self._key_attr = cfg.attrmap['id']
     if self._key_attr not in cfg.attrmap:
         cfg.attrmap[self._key_attr] = self._key_attr
     self._login_attr = None
     if cfg.attrmap.get('login') \
             and cfg.attrmap['login'] != cfg.attrmap['id']:
         self._login_attr = cfg.attrmap['login']
     self.expiresAttr = getattr(cfg, 'expiresAttr', None)
     self.expiresUnit = getattr(cfg, 'expiresUnit', None)
     self.principal_attrmap = cfg.attrmap
     self.principal_attraliaser = DictAliaser(cfg.attrmap, cfg.strict)
     self.context = context
Пример #2
0
    def __init__(self, props, cfg):
        context = LDAPNode(name=cfg.baseDN, props=props)
        context.search_filter = cfg.queryFilter
        context.search_scope = int(cfg.scope)

        context.child_defaults = dict()
        context.child_defaults['objectClass'] = cfg.objectClasses
        if hasattr(cfg, 'defaults'):
            context.child_defaults.update(cfg.defaults)
        for oc in cfg.objectClasses:
            for key, val in creation_defaults.get(oc, dict()).items():
                if not key in context.child_defaults:
                    context.child_defaults[key] = val

        # XXX: make these attrs public
        context._key_attr = cfg.attrmap['id']
        context._rdn_attr = cfg.attrmap['rdn']

        #if cfg.member_relation:
        #    context.search_relation = cfg.member_relation

        context._seckey_attrs = ('dn', )
        if cfg.attrmap.get('login') \
          and cfg.attrmap['login'] != cfg.attrmap['id']:
            context._seckey_attrs += (cfg.attrmap['login'], )

        context._load_keys()

        self.expiresAttr = getattr(cfg, 'expiresAttr', None)
        self.expiresUnit = getattr(cfg, 'expiresUnit', None)
        self.principal_attrmap = cfg.attrmap
        self.principal_attraliaser = DictAliaser(cfg.attrmap, cfg.strict)
        self.context = context
Пример #3
0
    def test_DictAliaser(self):
        # A dict aliaser takes a dictionary as base for aliasing
        da = DictAliaser([('alias1', 'key1'), ('alias2', 'key2')])
        self.assertEqual(da.alias('key1'), 'alias1')
        self.assertEqual(da.unalias('alias2'), 'key2')

        # By default, aliasing is strict, which means that only key/value pairs
        # set in aliaser are valid
        err = self.expectError(KeyError, da.alias, 'foo')
        self.assertEqual(str(err), '\'foo\'')
        err = self.expectError(KeyError, da.unalias, 'foo')
        self.assertEqual(str(err), '\'foo\'')

        # By setting strict to False, inexistent keys are returned as fallback
        da = DictAliaser([('alias1', 'key1'), ('alias2', 'key2')],
                         strict=False)
        self.assertEqual(da.alias('foo'), 'foo')
        self.assertEqual(da.unalias('foo'), 'foo')
Пример #4
0
 class AliasDict(dict):
     aliaser = DictAliaser(data=(('foo', 'f00'), ('bar', 'b4r')))