1 """
2 Test cases for ldaptor.protocols.ldap.autofill.sambaAccount module.
3 """
4
5 import sets
6 from twisted.trial import unittest
7 from ldaptor.protocols.ldap import ldapsyntax
8 from ldaptor.protocols.ldap.autofill import sambaAccount, sambaSamAccount
9 from ldaptor import testutil
10
28
30 """Test that fields get their default values."""
31 client = testutil.LDAPClientTestDriver()
32 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
33 dn='cn=foo,dc=example,dc=com',
34 attributes={
35 'objectClass': ['sambaAccount', 'other'],
36 })
37 d = o.addAutofiller(sambaAccount.Autofill_samba())
38 def cb(dummy):
39 client.assertNothingSent()
40
41 self.failUnless('acctFlags' in o)
42 self.failUnlessEqual(o['acctFlags'], ['[UX ]'])
43
44 self.failUnless('pwdLastSet' in o)
45 self.failUnlessEqual(o['pwdLastSet'], ['0'])
46 self.failUnless('logonTime' in o)
47 self.failUnlessEqual(o['logonTime'], ['0'])
48 self.failUnless('logoffTime' in o)
49 self.failUnlessEqual(o['logoffTime'], ['0'])
50 self.failUnless('pwdCanChange' in o)
51 self.failUnlessEqual(o['pwdCanChange'], ['0'])
52 self.failUnless('pwdMustChange' in o)
53 self.failUnlessEqual(o['pwdMustChange'], ['0'])
54 d.addCallback(cb)
55 return d
56
58 """Test that rid field is updated based on uidNumber."""
59 client = testutil.LDAPClientTestDriver()
60 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
61 dn='cn=foo,dc=example,dc=com',
62 attributes={
63 'objectClass': ['sambaAccount', 'other'],
64 })
65 d = o.addAutofiller(sambaAccount.Autofill_samba())
66 def cb(dummy):
67 client.assertNothingSent()
68
69 o['uidNumber'] = ['1000']
70 self.failUnless('rid' in o)
71 self.failUnlessEqual(o['rid'], [str(2*1000+1000)])
72 o['uidNumber'] = ['1001']
73 self.failUnlessEqual(o['rid'], [str(2*1001+1000)])
74 o['uidNumber'] = ['1002']
75 self.failUnlessEqual(o['rid'], [str(2*1002+1000)])
76 o['uidNumber'] = ['2000']
77 self.failUnlessEqual(o['rid'], [str(2*2000+1000)])
78 o['uidNumber'] = ['3000']
79 self.failUnlessEqual(o['rid'], [str(2*3000+1000)])
80 o['uidNumber'] = ['0']
81 self.failUnlessEqual(o['rid'], [str(2*0+1000)])
82 o['uidNumber'] = ['16000']
83 self.failUnlessEqual(o['rid'], [str(2*16000+1000)])
84 d.addCallback(cb)
85 return d
86
88 """Test that primaryGroupID field is updated based on gidNumber."""
89 client = testutil.LDAPClientTestDriver()
90 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
91 dn='cn=foo,dc=example,dc=com',
92 attributes={
93 'objectClass': ['sambaAccount', 'other'],
94 })
95 d = o.addAutofiller(sambaAccount.Autofill_samba())
96 def cb(dummy):
97 client.assertNothingSent()
98
99 o['gidNumber'] = ['1000']
100 self.failUnless('primaryGroupID' in o)
101 self.failUnlessEqual(o['primaryGroupID'], [str(2*1000+1001)])
102 o['gidNumber'] = ['1001']
103 self.failUnlessEqual(o['primaryGroupID'], [str(2*1001+1001)])
104 o['gidNumber'] = ['1002']
105 self.failUnlessEqual(o['primaryGroupID'], [str(2*1002+1001)])
106 o['gidNumber'] = ['2000']
107 self.failUnlessEqual(o['primaryGroupID'], [str(2*2000+1001)])
108 o['gidNumber'] = ['3000']
109 self.failUnlessEqual(o['primaryGroupID'], [str(2*3000+1001)])
110 o['gidNumber'] = ['0']
111 self.failUnlessEqual(o['primaryGroupID'], [str(2*0+1001)])
112 o['gidNumber'] = ['16000']
113 self.failUnlessEqual(o['primaryGroupID'], [str(2*16000+1001)])
114 d.addCallback(cb)
115 return d
116
134
136 """Test that fields get their default values."""
137 client = testutil.LDAPClientTestDriver()
138 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
139 dn='cn=foo,dc=example,dc=com',
140 attributes={
141 'objectClass': ['sambaSamAccount', 'other'],
142 })
143 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo'))
144 def cb(dummy):
145 client.assertNothingSent()
146
147 self.failUnlessEqual(sets.Set(o.keys()), sets.Set([
148 'objectClass',
149 'sambaAcctFlags',
150 'sambaLogoffTime',
151 'sambaLogonTime',
152 'sambaPwdCanChange',
153 'sambaPwdLastSet',
154 'sambaPwdMustChange',
155 ]))
156
157 self.failUnlessEqual(o['sambaAcctFlags'], ['[UX ]'])
158 self.failUnlessEqual(o['sambaPwdLastSet'], ['0'])
159 self.failUnlessEqual(o['sambaLogonTime'], ['0'])
160 self.failUnlessEqual(o['sambaLogoffTime'], ['0'])
161 self.failUnlessEqual(o['sambaPwdCanChange'], ['0'])
162 self.failUnlessEqual(o['sambaPwdMustChange'], ['0'])
163 d.addCallback(cb)
164 return d
165
167 """Test that fields get their default values."""
168 client = testutil.LDAPClientTestDriver()
169 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
170 dn='cn=foo,dc=example,dc=com',
171 attributes={
172 'objectClass': ['sambaSamAccount', 'other'],
173 })
174 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo',
175 fixedPrimaryGroupSID=4131312))
176 def cb(dummy):
177 client.assertNothingSent()
178
179 self.failUnlessEqual(sets.Set(o.keys()), sets.Set([
180 'objectClass',
181 'sambaAcctFlags',
182 'sambaLogoffTime',
183 'sambaLogonTime',
184 'sambaPwdCanChange',
185 'sambaPwdLastSet',
186 'sambaPwdMustChange',
187 'sambaPrimaryGroupSID',
188 ]))
189
190 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-4131312'])
191 self.failUnlessEqual(o['sambaAcctFlags'], ['[UX ]'])
192 self.failUnlessEqual(o['sambaPwdLastSet'], ['0'])
193 self.failUnlessEqual(o['sambaLogonTime'], ['0'])
194 self.failUnlessEqual(o['sambaLogoffTime'], ['0'])
195 self.failUnlessEqual(o['sambaPwdCanChange'], ['0'])
196 self.failUnlessEqual(o['sambaPwdMustChange'], ['0'])
197 d.addCallback(cb)
198 return d
199
201 """Test that sambaSID field is updated based on uidNumber."""
202 client = testutil.LDAPClientTestDriver()
203 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
204 dn='cn=foo,dc=example,dc=com',
205 attributes={
206 'objectClass': ['sambaSamAccount', 'other'],
207 })
208 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo'))
209 def cb(dummy):
210 client.assertNothingSent()
211
212 o['uidNumber'] = ['1000']
213 self.failUnless('sambaSID' in o)
214 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*1000+1000)])
215 o['uidNumber'] = ['1001']
216 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*1001+1000)])
217 o['uidNumber'] = ['1002']
218 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*1002+1000)])
219 o['uidNumber'] = ['2000']
220 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*2000+1000)])
221 o['uidNumber'] = ['3000']
222 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*3000+1000)])
223 o['uidNumber'] = ['0']
224 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*0+1000)])
225 o['uidNumber'] = ['16000']
226 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*16000+1000)])
227 d.addCallback(cb)
228 return d
229
245 d.addCallback(cb)
246 return d
247
249 """Test that sambaPrimaryGroupSID field is updated based on gidNumber."""
250 client = testutil.LDAPClientTestDriver()
251 o=ldapsyntax.LDAPEntryWithAutoFill(client=client,
252 dn='cn=foo,dc=example,dc=com',
253 attributes={
254 'objectClass': ['sambaSamAccount', 'other'],
255 })
256 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo'))
257 def cb(dummy):
258 client.assertNothingSent()
259
260 o['gidNumber'] = ['1000']
261 self.failUnless('sambaPrimaryGroupSID' in o)
262 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*1000+1001)])
263 o['gidNumber'] = ['1001']
264 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*1001+1001)])
265 o['gidNumber'] = ['1002']
266 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*1002+1001)])
267 o['gidNumber'] = ['2000']
268 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*2000+1001)])
269 o['gidNumber'] = ['3000']
270 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*3000+1001)])
271 o['gidNumber'] = ['0']
272 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*0+1001)])
273 o['gidNumber'] = ['16000']
274 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*16000+1001)])
275 d.addCallback(cb)
276 return d
277
293 d.addCallback(cb)
294 return d
295
314 d.addCallback(cb)
315 return d
316