1 """
2 Test cases for ldaptor.diff
3 """
4
5 from twisted.trial import unittest
6 from ldaptor import delta, entry
7
8 -class TestDiffEntry(unittest.TestCase):
10 a = entry.BaseLDAPEntry(dn='dc=foo',
11 attributes={
12 'foo': ['bar'],
13 })
14 b = entry.BaseLDAPEntry(dn='dc=foo',
15 attributes={
16 'foo': ['bar'],
17 })
18 result = a.diff(b)
19 self.assertEquals(result, None)
20
22 a = entry.BaseLDAPEntry(dn='dc=foo',
23 attributes={
24 'foo': ['bar'],
25 })
26 b = entry.BaseLDAPEntry(dn='dc=foo',
27 attributes={
28 'foo': ['bar'],
29 'baz': ['quux'],
30 })
31 result = a.diff(b)
32 self.assertEquals(result,
33 delta.ModifyOp('dc=foo',
34 [
35 delta.Add('baz', ['quux']),
36 ]))
37
39 a = entry.BaseLDAPEntry(dn='dc=foo',
40 attributes={
41 'foo': ['bar'],
42 })
43 b = entry.BaseLDAPEntry(dn='dc=foo',
44 attributes={
45 'foo': ['bar'],
46 'baz': ['quux', 'thud', 'foo'],
47 })
48 result = a.diff(b)
49 self.assertEquals(result,
50 delta.ModifyOp('dc=foo',
51 [
52 delta.Add('baz', ['quux', 'thud', 'foo']),
53 ]))
54
56 a = entry.BaseLDAPEntry(dn='dc=foo',
57 attributes={
58 'foo': ['bar'],
59 })
60 b = entry.BaseLDAPEntry(dn='dc=foo',
61 attributes={
62 'foo': ['bar'],
63 'baz': ['quux'],
64 'bang': ['thud'],
65 })
66 result = a.diff(b)
67 self.assertEquals(result,
68 delta.ModifyOp('dc=foo',
69 [
70 delta.Add('bang', ['thud']),
71 delta.Add('baz', ['quux']),
72 ]))
73
75 a = entry.BaseLDAPEntry(dn='dc=foo',
76 attributes={
77 'foo': ['bar'],
78 })
79 b = entry.BaseLDAPEntry(dn='dc=foo',
80 attributes={
81 'foo': ['bar', 'quux'],
82 })
83 result = a.diff(b)
84 self.assertEquals(result,
85 delta.ModifyOp('dc=foo',
86 [
87 delta.Add('foo', ['quux']),
88 ]))
89
91 a = entry.BaseLDAPEntry(dn='dc=foo',
92 attributes={
93 'foo': ['bar'],
94 })
95 b = entry.BaseLDAPEntry(dn='dc=foo',
96 attributes={
97 'foo': ['bar', 'quux', 'thud', 'foo'],
98 })
99 result = a.diff(b)
100 self.assertEquals(result,
101 delta.ModifyOp('dc=foo',
102 [
103 delta.Add('foo', ['quux', 'thud', 'foo']),
104 ]))
105
107 a = entry.BaseLDAPEntry(dn='dc=foo',
108 attributes={
109 'foo': ['bar'],
110 'baz': ['quux'],
111 })
112 b = entry.BaseLDAPEntry(dn='dc=foo',
113 attributes={
114 'foo': ['bar', 'thud', 'bang'],
115 'baz': ['quux', 'bar', 'stump'],
116 'bang': ['thud', 'barble'],
117 })
118 result = a.diff(b)
119 self.assertEquals(result,
120 delta.ModifyOp('dc=foo',
121 [
122 delta.Add('bang', ['thud', 'barble']),
123 delta.Add('baz', ['bar', 'stump']),
124 delta.Add('foo', ['thud', 'bang']),
125 ]))
126
128 a = entry.BaseLDAPEntry(dn='dc=foo',
129 attributes={
130 'foo': ['bar'],
131 'baz': ['quux', 'thud'],
132 })
133 b = entry.BaseLDAPEntry(dn='dc=foo',
134 attributes={
135 'foo': ['bar'],
136 })
137 result = a.diff(b)
138 self.assertEquals(result,
139 delta.ModifyOp('dc=foo',
140 [
141 delta.Delete('baz', ['quux', 'thud']),
142 ]))
143
145 a = entry.BaseLDAPEntry(dn='dc=foo',
146 attributes={
147 'foo': ['bar'],
148 'baz': ['quux', 'thud'],
149 })
150 b = entry.BaseLDAPEntry(dn='dc=foo',
151 attributes={
152 'foo': ['bar'],
153 'baz': ['thud'],
154 })
155 result = a.diff(b)
156 self.assertEquals(result,
157 delta.ModifyOp('dc=foo',
158 [
159 delta.Delete('baz', ['quux']),
160 ]))
161
162 - def testComplex(self):
163 a = entry.BaseLDAPEntry(dn='cn=Paula Jensen,ou=Product Development,dc=airius,dc=com',
164 attributes={
165 'description': ['Something'],
166 'telephonenumber': ['+123 456'],
167 'facsimiletelephonenumber': ['+1 408 555 9876'],
168 })
169 b = entry.BaseLDAPEntry(dn='cn=Paula Jensen,ou=Product Development,dc=airius,dc=com',
170 attributes={
171 'postalAddress': ['123 Anystreet $ Sunnyvale, CA $ 94086'],
172 'telephonenumber': ['+1 408 555 1234', '+1 408 555 5678'],
173 })
174 result = a.diff(b)
175 self.assertEquals(result,
176 delta.ModifyOp('cn=Paula Jensen,ou=Product Development,dc=airius,dc=com',
177 [
178 delta.Add('postalAddress', ['123 Anystreet $ Sunnyvale, CA $ 94086']),
179 delta.Delete('description', ['Something']),
180 delta.Delete('facsimiletelephonenumber', ['+1 408 555 9876']),
181 delta.Add('telephonenumber', ['+1 408 555 1234', '+1 408 555 5678']),
182 delta.Delete('telephonenumber', ['+123 456']),
183 ]))
184