summaryrefslogtreecommitdiffstats
path: root/ipatests/test_ipaserver
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2013-02-27 09:16:49 +0100
committerMartin Kosek <mkosek@redhat.com>2013-10-31 18:09:51 +0100
commit9ecf4b7aac0adbe23e166a42ac8ce0f24f4a13f6 (patch)
treef604e816f3adf60620ffc05c743553786f405cdd /ipatests/test_ipaserver
parent5d1d5138493b391c319e8d410b19ae7a8ab712f7 (diff)
downloadfreeipa-9ecf4b7aac0adbe23e166a42ac8ce0f24f4a13f6.tar.gz
freeipa-9ecf4b7aac0adbe23e166a42ac8ce0f24f4a13f6.tar.xz
freeipa-9ecf4b7aac0adbe23e166a42ac8ce0f24f4a13f6.zip
Decode and encode attribute values in LDAPEntry on demand.
This is achieved by storing both decoded and encoded attribute values in LDAPEntry and synchronizing changes between them whenever an attribute is accessed. Added a new property "raw" to LDAPEntry. It provides a dictionary-like object which can be used to directly access encoded attribute values. https://fedorahosted.org/freeipa/ticket/3521
Diffstat (limited to 'ipatests/test_ipaserver')
-rw-r--r--ipatests/test_ipaserver/test_ldap.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/ipatests/test_ipaserver/test_ldap.py b/ipatests/test_ipaserver/test_ldap.py
index 21363f2ef..9cd7f90db 100644
--- a/ipatests/test_ipaserver/test_ldap.py
+++ b/ipatests/test_ipaserver/test_ldap.py
@@ -257,3 +257,51 @@ class test_LDAPEntry(object):
assert e.single_value('commonname') == self.cn1[0]
assert e.single_value('COMMONNAME', 'default') == self.cn1[0]
assert e.single_value('bad key', 'default') == 'default'
+
+ def test_sync(self):
+ e = self.entry
+
+ nice = e['test'] = [1, 2, 3]
+ assert e['test'] is nice
+
+ raw = e.raw['test']
+ assert raw == ['1', '2', '3']
+
+ nice.remove(1)
+ assert e.raw['test'] is raw
+ assert raw == ['2', '3']
+
+ raw.append('4')
+ assert e['test'] is nice
+ assert nice == [2, 3, u'4']
+
+ nice.remove(2)
+ raw.append('5')
+ assert nice == [3, u'4']
+ assert raw == ['2', '3', '4', '5']
+ assert e['test'] is nice
+ assert e.raw['test'] is raw
+ assert nice == [3, u'4', u'5']
+ assert raw == ['3', '4', '5']
+
+ nice.insert(0, 2)
+ raw.remove('4')
+ assert nice == [2, 3, u'4', u'5']
+ assert raw == ['3', '5']
+ assert e.raw['test'] is raw
+ assert e['test'] is nice
+ assert nice == [2, 3, u'5']
+ assert raw == ['3', '5', '2']
+
+ raw = ['a', 'b']
+ e.raw['test'] = raw
+ assert e['test'] is not nice
+ assert e['test'] == [u'a', u'b']
+
+ nice = 'not list'
+ e['test'] = nice
+ assert e['test'] is nice
+ assert e.raw['test'] == ['not list']
+
+ e.raw['test'].append('second')
+ assert e['test'] == ['not list', u'second']