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

Source Code for Module ldaptor.test.test_autofill_posix

  1  """ 
  2  Test cases for ldaptor.protocols.ldap.autofill.posixAccount module. 
  3  """ 
  4   
  5  from twisted.trial import unittest 
  6  from ldaptor.protocols.ldap import ldapsyntax, autofill 
  7  from ldaptor.protocols import pureldap 
  8  from ldaptor.protocols.ldap.autofill import posixAccount 
  9  from ldaptor.testutil import LDAPClientTestDriver 
 10   
11 -class LDAPAutoFill_Posix(unittest.TestCase):
12 - def testMustHaveObjectClass(self):
13 """Test that Autofill_posix fails unless object is a posixAccount.""" 14 client = LDAPClientTestDriver() 15 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 16 dn='cn=foo,dc=example,dc=com', 17 attributes={ 18 'objectClass': ['something', 'other'], 19 }) 20 autoFiller = posixAccount.Autofill_posix(baseDN='dc=example,dc=com') 21 d = o.addAutofiller(autoFiller) 22 def _cbMustRaise(_): 23 raise unittest.FailTest('Should have raised an exception')
24 def _eb(fail): 25 client.assertNothingSent() 26 fail.trap(autofill.ObjectMissingObjectClassException) 27 return None
28 d.addCallbacks(_cbMustRaise, 29 _eb) 30 return d 31
32 - def testDefaultSetting(self):
33 """Test that fields get their default values.""" 34 35 client = LDAPClientTestDriver( 36 # uid==1000 -> free 37 [ pureldap.LDAPSearchResultDone(resultCode=0, 38 matchedDN='', 39 errorMessage=''),], 40 41 # gid==1000 -> taken 42 [ pureldap.LDAPSearchResultEntry(objectName='', 43 attributes=[('objectClass', 44 ('foo', 45 'posixAccount', 46 'bar'))]), 47 pureldap.LDAPSearchResultDone(resultCode=0, 48 matchedDN='', 49 errorMessage=''),], 50 # gid==1500 -> free 51 [ pureldap.LDAPSearchResultDone(resultCode=0, 52 matchedDN='', 53 errorMessage=''),], 54 55 # gid==1250 -> free 56 [ pureldap.LDAPSearchResultDone(resultCode=0, 57 matchedDN='', 58 errorMessage=''),], 59 60 # gid==1125 -> free 61 [ pureldap.LDAPSearchResultDone(resultCode=0, 62 matchedDN='', 63 errorMessage=''),], 64 65 # gid==1062 -> free 66 [ pureldap.LDAPSearchResultDone(resultCode=0, 67 matchedDN='', 68 errorMessage=''),], 69 # gid==1031 -> free 70 [ pureldap.LDAPSearchResultEntry(objectName='', 71 attributes=[('objectClass', 72 ('foo', 73 'posixAccount', 74 'bar'))]), 75 pureldap.LDAPSearchResultDone(resultCode=0, 76 matchedDN='', 77 errorMessage=''),], 78 79 # gid==1046 -> free 80 [ pureldap.LDAPSearchResultDone(resultCode=0, 81 matchedDN='', 82 errorMessage=''),], 83 84 # gid==1038 -> taken 85 [ pureldap.LDAPSearchResultEntry(objectName='', 86 attributes=[('objectClass', 87 ('foo', 88 'posixAccount', 89 'bar'))]), 90 pureldap.LDAPSearchResultDone(resultCode=0, 91 matchedDN='', 92 errorMessage=''),], 93 94 # gid==1042 -> free 95 [ pureldap.LDAPSearchResultDone(resultCode=0, 96 matchedDN='', 97 errorMessage=''),], 98 99 # gid==1040 -> taken 100 [ pureldap.LDAPSearchResultEntry(objectName='', 101 attributes=[('objectClass', 102 ('foo', 103 'posixAccount', 104 'bar'))]), 105 pureldap.LDAPSearchResultDone(resultCode=0, 106 matchedDN='', 107 errorMessage=''),], 108 109 # gid==1041 -> taken 110 [ pureldap.LDAPSearchResultEntry(objectName='', 111 attributes=[('objectClass', 112 ('foo', 113 'posixAccount', 114 'bar'))]), 115 pureldap.LDAPSearchResultDone(resultCode=0, 116 matchedDN='', 117 errorMessage=''),], 118 ) 119 120 o=ldapsyntax.LDAPEntryWithAutoFill(client=client, 121 dn='cn=foo,dc=example,dc=com', 122 attributes={ 123 'objectClass': ['posixAccount', 'other'], 124 }) 125 126 d = o.addAutofiller(posixAccount.Autofill_posix(baseDN='dc=example,dc=com')) 127 d.addCallback(self._cb_testDefaultSetting, client, o) 128 return d
129
130 - def _cb_testDefaultSetting(self, val, client, o):
131 client.assertSent( 132 *[ 133 134 pureldap.LDAPSearchRequest( 135 baseObject='dc=example,dc=com', scope=2, 136 derefAliases=0, sizeLimit=1, timeLimit=0, typesOnly=0, 137 filter=pureldap.LDAPFilter_equalityMatch(attributeDesc=pureldap.LDAPAttributeDescription(value='uidNumber'), 138 assertionValue=pureldap.LDAPAssertionValue(value='1000')), 139 attributes=()), 140 141 ] + [ 142 pureldap.LDAPSearchRequest( 143 baseObject='dc=example,dc=com', scope=2, 144 derefAliases=0, sizeLimit=1, timeLimit=0, typesOnly=0, 145 filter=pureldap.LDAPFilter_equalityMatch(attributeDesc=pureldap.LDAPAttributeDescription(value='gidNumber'), 146 assertionValue=pureldap.LDAPAssertionValue(value=str(x))), 147 attributes=()) 148 for x in (1000, 1500, 1250, 1125, 1062, 1031, 1046, 1038, 1042, 1040, 1041)]) 149 150 self.failUnless('loginShell' in o) 151 self.failUnlessEqual(o['loginShell'], ['/bin/sh']) 152 153 self.failUnless('uidNumber' in o) 154 self.failUnlessEqual(o['uidNumber'], ['1000']) 155 self.failUnless('gidNumber' in o) 156 self.failUnlessEqual(o['gidNumber'], ['1042'])
157