[Zope-CVS] SVN: ldapadapter/trunk/tests/ change name to lowercase
name
Roger Ineichen
roger at projekt01.ch
Sat Oct 9 05:07:48 EDT 2004
Log message for revision 27805:
change name to lowercase name
Changed:
D ldapadapter/trunk/tests/FakeLDAP.py
A ldapadapter/trunk/tests/fakeldap_lowercase.py
-=-
Deleted: ldapadapter/trunk/tests/FakeLDAP.py
===================================================================
--- ldapadapter/trunk/tests/FakeLDAP.py 2004-10-09 09:03:48 UTC (rev 27804)
+++ ldapadapter/trunk/tests/FakeLDAP.py 2004-10-09 09:07:48 UTC (rev 27805)
@@ -1,303 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE
-#
-# FakeLDAP Fake LDAP interface to test LDAP functionality
-# independently of a running LDAP server
-#
-# This software is governed by a license (ZPL v2.1).
-# (c) Jens Vagelpohl, Nicolas Ãvrard
-##############################################################################
-"""LDAPAdapter test packages.
-
-$Id: $
-"""
-
-__version__='$Revision: 1.7 $'[11:-2]
-
-import ldap, sha, base64, copy
-from ldap.modlist import addModlist
-
-# Module-level stuff
-__version__ = '2.fake'
-
-SCOPE_BASE = getattr(ldap, 'SCOPE_BASE')
-SCOPE_ONELEVEL = getattr(ldap, 'SCOPE_ONELEVEL')
-SCOPE_SUBTREE = getattr(ldap, 'SCOPE_SUBTREE')
-
-MOD_ADD = getattr(ldap, 'MOD_ADD')
-MOD_REPLACE = getattr(ldap, 'MOD_REPLACE')
-MOD_DELETE = getattr(ldap, 'MOD_DELETE')
-
-OPT_PROTOCOL_VERSION = None
-OPT_REFERRALS = None
-VERSION2 = None
-VERSION3 = None
-
-class LDAPError(Exception): pass
-class SERVER_DOWN(Exception): pass
-class PROTOCOL_ERROR(Exception): pass
-class NO_SUCH_OBJECT(Exception): pass
-class INVALID_CREDENTIALS(Exception): pass
-class ALREADY_EXISTS(Exception): pass
-class SIZELIMIT_EXCEEDED(Exception): pass
-class PARTIAL_RESULTS(Exception): pass
-
-REFERRAL = None
-
-TREE = {}
-
-
-def initialize(conn_str):
- """ Initialize a new connection """
- return FakeLDAPConnection()
-
-def explode_dn(dn, *ign, **ignored):
- """ Get a DN's elements """
- return [x.strip() for x in dn.split(',')]
-
-def clearTree():
- TREE.clear()
-
-def addTreeItems(dn):
- """ Add structure directly to the tree given a DN """
- elems = explode_dn(dn)
- elems.reverse()
- tree_pos = TREE
-
- for elem in elems:
- if not tree_pos.has_key(elem):
- tree_pos[elem] = {}
-
- tree_pos = tree_pos[elem]
-
-def sha_encode(paswd):
- sha_pswd = sha.new(paswd)
- sha_dig = sha_pswd.digest()
- paswd_enc = base64.encodestring(sha_dig).strip()
- return '{SHA}%s' % paswd_enc
-
-class modlist:
-
- addModlist = addModlist
-
-class FakeLDAPConnection:
-
- def __init__(self):
- pass
-
- def set_option(self, option, value):
- pass
-
- def simple_bind_s(self, binduid, bindpwd):
- if binduid.find('Manager') != -1:
- return 1
-
- if bindpwd == '':
- # Emulate LDAP mis-behavior
- return 1
-
- enc_bindpwd = bindpwd
- rec = self.search_s(binduid)
- rec_pwd = ''
- for key, val_list in rec:
- if key == 'userPassword':
- rec_pwd = val_list[0]
- break
-
- if not rec_pwd:
- raise INVALID_CREDENTIALS
-
- if enc_bindpwd == rec_pwd:
- return 1
- else:
- raise INVALID_CREDENTIALS
-
-
- def search_s(self, base, scope=SCOPE_SUBTREE, query='(objectClass=*)', attrs=[]):
- elems = explode_dn(base)
- elems.reverse()
- tree_pos = TREE
-
- for elem in elems:
- if tree_pos.has_key(elem):
- tree_pos = tree_pos[elem]
-
- if query == '(objectClass=*)':
- if scope == SCOPE_BASE and tree_pos.get('dn', '') == base:
- return (([base, tree_pos],))
- else:
- return tree_pos.items()
-
- if query.find('objectClass=groupOfUniqueNames') != -1:
- res = []
- if query.find('uniqueMember=') == -1:
- for key, vals in tree_pos.items():
- res.append(('%s,%s' % (key, base), vals))
-
- else:
- q_start = query.find('uniqueMember=') + 13
- q_end = query.find(')', q_start)
- q_val = query[q_start:q_end]
-
- for key, val in tree_pos.items():
- if ( val.has_key('uniqueMember') and
- q_val in val['uniqueMember'] ):
- res.append(('%s,%s' % (key, base), val))
-
- return res
-
- elif query.find('unique') != -1:
- res = []
- if query.find('*') != -1:
- for key, vals in tree_pos.items():
- res.append(('%s,%s' % (key, base), vals))
- else:
- q_start = query.lower().find('uniquemember=') + 13
- q_end = query.find(')', q_start)
- q_val = query[q_start:q_end]
-
- for key, val in tree_pos.items():
- if ( val.has_key('uniqueMember') and
- q_val in val['uniqueMember'] ):
- res.append(('%s,%s' % (key, base), val))
-
- return res
-
-
- else:
- res = []
- if query.startswith('('):
- query = query[1:]
-
- if query.endswith(')'):
- query = query[:-1]
-
- if query.startswith('&'):
- # Convoluted query, gotta take it apart
- query = query[2:]
- query = query[:-1]
- query_elems = query.split(')(')
- query = query_elems[0]
- query_elems.remove(query)
-
- q_key, q_val = query.split('=')
- for key, val in tree_pos.items():
- if val.has_key(q_key):
- if '*' not in q_val and q_val in val[q_key]:
- res.append(('%s,%s' % (key, base), val))
- elif '*' == q_val[0] and '*' == q_val[-1]:
- qval = q_val[1:-1]
- for value in val[q_key]:
- if qval in value:
- res.append(('%s,%s' % (key, base), val))
- elif '*' == q_val[0]:
- qval = q_val[1:]
- for values in val[q_key]:
- if value.endswith(qval):
- res.append(('%s,%s' % (key, base), val))
- elif '*' == q_val[-1]:
- qval = q_val[:-1]
- for values in val[q_key]:
- if value.startswith(qval):
- res.append(('%s,%s' % (key, base), val))
-
- return res
-
- def add_s(self, dn, attr_list):
- elems = explode_dn(dn)
- elems.reverse()
- rdn = elems[-1]
- base = elems[:-1]
- tree_pos = TREE
-
- for elem in base:
- if tree_pos.has_key(elem):
- tree_pos = tree_pos[elem]
-
- if tree_pos.has_key(rdn):
- raise ALREADY_EXISTS
- else:
- tree_pos[rdn] = {}
- rec = tree_pos[rdn]
-
- for key, val in attr_list:
- if isinstance(val, list):
- rec[key] = val
- else:
- rec[key] = [val]
-
- def delete_s(self, dn):
- elems = explode_dn(dn)
- elems.reverse()
- rdn = elems[-1]
- base = elems[:-1]
- tree_pos = TREE
-
- for elem in base:
- if tree_pos.has_key(elem):
- tree_pos = tree_pos[elem]
-
- if tree_pos.has_key(rdn):
- del tree_pos[rdn]
-
- def modify_s(self, dn, mod_list):
- elems = explode_dn(dn)
- elems.reverse()
- rdn = elems[-1]
- base = elems[:-1]
- tree_pos = TREE
-
- for elem in base:
- if tree_pos.has_key(elem):
- tree_pos = tree_pos[elem]
-
- rec = copy.deepcopy(tree_pos.get(rdn))
-
- for mod in mod_list:
- if mod[0] == MOD_REPLACE:
- rec[mod[1]] = mod[2]
- elif mod[0] == MOD_ADD:
- cur_val = rec[mod[1]]
- cur_val.extend(mod[2])
- rec[mod[1]] = cur_val
- else:
- if rec.has_key(mod[1]):
- cur_vals = rec[mod[1]]
- for removed in mod[2]:
- if removed in cur_vals:
- cur_vals.remove(removed)
-
- rec[mod[1]] = cur_vals
-
- tree_pos[rdn] = rec
-
- def modrdn_s(self, dn, new_rdn, *ign):
- elems = explode_dn(dn)
- elems.reverse()
- rdn = elems[-1]
- base = elems[:-1]
- tree_pos = TREE
-
- for elem in base:
- if tree_pos.has_key(elem):
- tree_pos = tree_pos[elem]
-
- rec = tree_pos.get(rdn)
-
- del tree_pos[rdn]
- tree_pos[new_rdn] = rec
-
-
-class ldapobject:
- class ReconnectLDAPObject(FakeLDAPConnection):
- def __init__(self, *ignored):
- pass
Copied: ldapadapter/trunk/tests/fakeldap_lowercase.py (from rev 27804, ldapadapter/trunk/tests/FakeLDAP.py)
===================================================================
--- ldapadapter/trunk/tests/FakeLDAP.py 2004-10-09 09:03:48 UTC (rev 27804)
+++ ldapadapter/trunk/tests/fakeldap_lowercase.py 2004-10-09 09:07:48 UTC (rev 27805)
@@ -0,0 +1,303 @@
+##############################################################################
+#
+# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE
+#
+# FakeLDAP Fake LDAP interface to test LDAP functionality
+# independently of a running LDAP server
+#
+# This software is governed by a license (ZPL v2.1).
+# (c) Jens Vagelpohl, Nicolas Ãvrard
+##############################################################################
+"""LDAPAdapter test packages.
+
+$Id$
+"""
+
+__version__='$Revision: 1.7 $'[11:-2]
+
+import ldap, sha, base64, copy
+from ldap.modlist import addModlist
+
+# Module-level stuff
+__version__ = '2.fake'
+
+SCOPE_BASE = getattr(ldap, 'SCOPE_BASE')
+SCOPE_ONELEVEL = getattr(ldap, 'SCOPE_ONELEVEL')
+SCOPE_SUBTREE = getattr(ldap, 'SCOPE_SUBTREE')
+
+MOD_ADD = getattr(ldap, 'MOD_ADD')
+MOD_REPLACE = getattr(ldap, 'MOD_REPLACE')
+MOD_DELETE = getattr(ldap, 'MOD_DELETE')
+
+OPT_PROTOCOL_VERSION = None
+OPT_REFERRALS = None
+VERSION2 = None
+VERSION3 = None
+
+class LDAPError(Exception): pass
+class SERVER_DOWN(Exception): pass
+class PROTOCOL_ERROR(Exception): pass
+class NO_SUCH_OBJECT(Exception): pass
+class INVALID_CREDENTIALS(Exception): pass
+class ALREADY_EXISTS(Exception): pass
+class SIZELIMIT_EXCEEDED(Exception): pass
+class PARTIAL_RESULTS(Exception): pass
+
+REFERRAL = None
+
+TREE = {}
+
+
+def initialize(conn_str):
+ """ Initialize a new connection """
+ return FakeLDAPConnection()
+
+def explode_dn(dn, *ign, **ignored):
+ """ Get a DN's elements """
+ return [x.strip() for x in dn.split(',')]
+
+def clearTree():
+ TREE.clear()
+
+def addTreeItems(dn):
+ """ Add structure directly to the tree given a DN """
+ elems = explode_dn(dn)
+ elems.reverse()
+ tree_pos = TREE
+
+ for elem in elems:
+ if not tree_pos.has_key(elem):
+ tree_pos[elem] = {}
+
+ tree_pos = tree_pos[elem]
+
+def sha_encode(paswd):
+ sha_pswd = sha.new(paswd)
+ sha_dig = sha_pswd.digest()
+ paswd_enc = base64.encodestring(sha_dig).strip()
+ return '{SHA}%s' % paswd_enc
+
+class modlist:
+
+ addModlist = addModlist
+
+class FakeLDAPConnection:
+
+ def __init__(self):
+ pass
+
+ def set_option(self, option, value):
+ pass
+
+ def simple_bind_s(self, binduid, bindpwd):
+ if binduid.find('Manager') != -1:
+ return 1
+
+ if bindpwd == '':
+ # Emulate LDAP mis-behavior
+ return 1
+
+ enc_bindpwd = bindpwd
+ rec = self.search_s(binduid)
+ rec_pwd = ''
+ for key, val_list in rec:
+ if key == 'userPassword':
+ rec_pwd = val_list[0]
+ break
+
+ if not rec_pwd:
+ raise INVALID_CREDENTIALS
+
+ if enc_bindpwd == rec_pwd:
+ return 1
+ else:
+ raise INVALID_CREDENTIALS
+
+
+ def search_s(self, base, scope=SCOPE_SUBTREE, query='(objectClass=*)', attrs=[]):
+ elems = explode_dn(base)
+ elems.reverse()
+ tree_pos = TREE
+
+ for elem in elems:
+ if tree_pos.has_key(elem):
+ tree_pos = tree_pos[elem]
+
+ if query == '(objectClass=*)':
+ if scope == SCOPE_BASE and tree_pos.get('dn', '') == base:
+ return (([base, tree_pos],))
+ else:
+ return tree_pos.items()
+
+ if query.find('objectClass=groupOfUniqueNames') != -1:
+ res = []
+ if query.find('uniqueMember=') == -1:
+ for key, vals in tree_pos.items():
+ res.append(('%s,%s' % (key, base), vals))
+
+ else:
+ q_start = query.find('uniqueMember=') + 13
+ q_end = query.find(')', q_start)
+ q_val = query[q_start:q_end]
+
+ for key, val in tree_pos.items():
+ if ( val.has_key('uniqueMember') and
+ q_val in val['uniqueMember'] ):
+ res.append(('%s,%s' % (key, base), val))
+
+ return res
+
+ elif query.find('unique') != -1:
+ res = []
+ if query.find('*') != -1:
+ for key, vals in tree_pos.items():
+ res.append(('%s,%s' % (key, base), vals))
+ else:
+ q_start = query.lower().find('uniquemember=') + 13
+ q_end = query.find(')', q_start)
+ q_val = query[q_start:q_end]
+
+ for key, val in tree_pos.items():
+ if ( val.has_key('uniqueMember') and
+ q_val in val['uniqueMember'] ):
+ res.append(('%s,%s' % (key, base), val))
+
+ return res
+
+
+ else:
+ res = []
+ if query.startswith('('):
+ query = query[1:]
+
+ if query.endswith(')'):
+ query = query[:-1]
+
+ if query.startswith('&'):
+ # Convoluted query, gotta take it apart
+ query = query[2:]
+ query = query[:-1]
+ query_elems = query.split(')(')
+ query = query_elems[0]
+ query_elems.remove(query)
+
+ q_key, q_val = query.split('=')
+ for key, val in tree_pos.items():
+ if val.has_key(q_key):
+ if '*' not in q_val and q_val in val[q_key]:
+ res.append(('%s,%s' % (key, base), val))
+ elif '*' == q_val[0] and '*' == q_val[-1]:
+ qval = q_val[1:-1]
+ for value in val[q_key]:
+ if qval in value:
+ res.append(('%s,%s' % (key, base), val))
+ elif '*' == q_val[0]:
+ qval = q_val[1:]
+ for values in val[q_key]:
+ if value.endswith(qval):
+ res.append(('%s,%s' % (key, base), val))
+ elif '*' == q_val[-1]:
+ qval = q_val[:-1]
+ for values in val[q_key]:
+ if value.startswith(qval):
+ res.append(('%s,%s' % (key, base), val))
+
+ return res
+
+ def add_s(self, dn, attr_list):
+ elems = explode_dn(dn)
+ elems.reverse()
+ rdn = elems[-1]
+ base = elems[:-1]
+ tree_pos = TREE
+
+ for elem in base:
+ if tree_pos.has_key(elem):
+ tree_pos = tree_pos[elem]
+
+ if tree_pos.has_key(rdn):
+ raise ALREADY_EXISTS
+ else:
+ tree_pos[rdn] = {}
+ rec = tree_pos[rdn]
+
+ for key, val in attr_list:
+ if isinstance(val, list):
+ rec[key] = val
+ else:
+ rec[key] = [val]
+
+ def delete_s(self, dn):
+ elems = explode_dn(dn)
+ elems.reverse()
+ rdn = elems[-1]
+ base = elems[:-1]
+ tree_pos = TREE
+
+ for elem in base:
+ if tree_pos.has_key(elem):
+ tree_pos = tree_pos[elem]
+
+ if tree_pos.has_key(rdn):
+ del tree_pos[rdn]
+
+ def modify_s(self, dn, mod_list):
+ elems = explode_dn(dn)
+ elems.reverse()
+ rdn = elems[-1]
+ base = elems[:-1]
+ tree_pos = TREE
+
+ for elem in base:
+ if tree_pos.has_key(elem):
+ tree_pos = tree_pos[elem]
+
+ rec = copy.deepcopy(tree_pos.get(rdn))
+
+ for mod in mod_list:
+ if mod[0] == MOD_REPLACE:
+ rec[mod[1]] = mod[2]
+ elif mod[0] == MOD_ADD:
+ cur_val = rec[mod[1]]
+ cur_val.extend(mod[2])
+ rec[mod[1]] = cur_val
+ else:
+ if rec.has_key(mod[1]):
+ cur_vals = rec[mod[1]]
+ for removed in mod[2]:
+ if removed in cur_vals:
+ cur_vals.remove(removed)
+
+ rec[mod[1]] = cur_vals
+
+ tree_pos[rdn] = rec
+
+ def modrdn_s(self, dn, new_rdn, *ign):
+ elems = explode_dn(dn)
+ elems.reverse()
+ rdn = elems[-1]
+ base = elems[:-1]
+ tree_pos = TREE
+
+ for elem in base:
+ if tree_pos.has_key(elem):
+ tree_pos = tree_pos[elem]
+
+ rec = tree_pos.get(rdn)
+
+ del tree_pos[rdn]
+ tree_pos[new_rdn] = rec
+
+
+class ldapobject:
+ class ReconnectLDAPObject(FakeLDAPConnection):
+ def __init__(self, *ignored):
+ pass
More information about the Zope-CVS
mailing list