diff options
author | Jan Cholasta <jcholast@redhat.com> | 2013-02-27 09:16:49 +0100 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2013-10-31 18:09:51 +0100 |
commit | 9ecf4b7aac0adbe23e166a42ac8ce0f24f4a13f6 (patch) | |
tree | f604e816f3adf60620ffc05c743553786f405cdd /ipatests/test_ipaserver/test_ldap.py | |
parent | 5d1d5138493b391c319e8d410b19ae7a8ab712f7 (diff) | |
download | freeipa-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/test_ldap.py')
-rw-r--r-- | ipatests/test_ipaserver/test_ldap.py | 48 |
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'] |