Package ldaptor :: Package test :: Module test_autofill_samba
[hide private]
[frames] | no frames]

Source Code for Module ldaptor.test.test_autofill_samba

  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   
11 -class LDAPAutoFill_sambaAccount(unittest.TestCase):
12 - def testMustHaveObjectClass(self):
13 """Test that Autofill_samba fails unless object is a sambaAccount.""" 14 client = testutil.LDAPClientTestDriver() 15 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 16 dn='cn=foo,dc=example,dc=com', 17 attributes={ 18 'objectClass': ['something', 'other'], 19 }) 20 autoFiller = sambaAccount.Autofill_samba() 21 d = o.addAutofiller(autoFiller) 22 23 def eb(val): 24 client.assertNothingSent() 25 val.trap(sambaAccount.ObjectMissingObjectClassException)
26 d.addCallbacks(testutil.mustRaise, eb) 27 return d
28
29 - def testDefaultSetting(self):
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
57 - def testRid(self):
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
87 - def testPrimaryGroupId(self):
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
117 -class LDAPAutoFill_sambaSamAccount(unittest.TestCase):
118 - def testMustHaveObjectClass(self):
119 """Test that Autofill_samba fails unless object is a sambaSamAccount.""" 120 client = testutil.LDAPClientTestDriver() 121 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 122 dn='cn=foo,dc=example,dc=com', 123 attributes={ 124 'objectClass': ['something', 'other'], 125 }) 126 autoFiller = sambaSamAccount.Autofill_samba(domainSID='foo') 127 d = o.addAutofiller(autoFiller) 128 129 def eb(val): 130 client.assertNothingSent() 131 val.trap(sambaSamAccount.ObjectMissingObjectClassException)
132 d.addCallbacks(testutil.mustRaise, eb) 133 return d
134
135 - def testDefaultSetting(self):
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
166 - def testDefaultSetting_fixedPrimaryGroupSID(self):
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
200 - def testSambaSID(self):
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
230 - def testSambaSID_preExisting(self):
231 """Test that sambaSID field is updated based on uidNumber.""" 232 client = testutil.LDAPClientTestDriver() 233 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 234 dn='cn=foo,dc=example,dc=com', 235 attributes={ 236 'objectClass': ['sambaSamAccount', 'other'], 237 'uidNumber': ['1000'], 238 }) 239 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo')) 240 def cb(dummy): 241 client.assertNothingSent() 242 243 self.failUnless('sambaSID' in o) 244 self.failUnlessEqual(o['sambaSID'], ['foo-%s' % (2*1000+1000)])
245 d.addCallback(cb) 246 return d 247
248 - def testSambaPrimaryGroupSID(self):
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
278 - def testSambaPrimaryGroupSID_preExisting(self):
279 """Test that sambaPrimaryGroupSID field is updated based on gidNumber.""" 280 client = testutil.LDAPClientTestDriver() 281 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 282 dn='cn=foo,dc=example,dc=com', 283 attributes={ 284 'objectClass': ['sambaSamAccount', 'other'], 285 'gidNumber': ['1000'], 286 }) 287 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo')) 288 def cb(dummy): 289 client.assertNothingSent() 290 291 self.failUnless('sambaPrimaryGroupSID' in o) 292 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-%s' % (2*1000+1001)])
293 d.addCallback(cb) 294 return d 295
296 - def testSambaPrimaryGroupSID_notUpdatedWhenFixed(self):
297 """Test that sambaPrimaryGroupSID field is updated based on gidNumber.""" 298 client = testutil.LDAPClientTestDriver() 299 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 300 dn='cn=foo,dc=example,dc=com', 301 attributes={ 302 'objectClass': ['sambaSamAccount', 'other'], 303 }) 304 d = o.addAutofiller(sambaSamAccount.Autofill_samba(domainSID='foo', 305 fixedPrimaryGroupSID=4242)) 306 def cb(dummy): 307 client.assertNothingSent() 308 309 self.failUnless('sambaPrimaryGroupSID' in o) 310 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-4242']) 311 o['gidNumber'] = ['1000'] 312 self.failUnless('sambaPrimaryGroupSID' in o) 313 self.failUnlessEqual(o['sambaPrimaryGroupSID'], ['foo-4242'])
314 d.addCallback(cb) 315 return d 316