def test_add_success(self): dn = 'cn=new,ou=stuff,dc=example,dc=com' self.server.dataReceived( str( pureldap.LDAPMessage(pureldap.LDAPAddRequest( entry=dn, attributes=[ (pureldap.LDAPAttributeDescription("objectClass"), pureber.BERSet( value=[pureldap.LDAPAttributeValue('something')])) ]), id=2))) self.assertEquals( self.server.transport.value(), str( pureldap.LDAPMessage(pureldap.LDAPAddResponse( resultCode=ldaperrors.Success.resultCode), id=2))) # tree changed d = self.stuff.children() d.addCallback(self.assertItemsEqual, [ self.thingie, self.another, inmemory.ReadOnlyInMemoryLDAPEntry( 'cn=new,ou=stuff,dc=example,dc=com', {'objectClass': ['something']}) ]) return d
def addChild(self, rdn, attributes): self._checkState() a = [] if attributes.get('objectClass', None): a.append(('objectClass', attributes['objectClass'])) del attributes['objectClass'] attributes = a + sorted(attributes.items()) del a rdn = distinguishedname.RelativeDistinguishedName(rdn) dn = distinguishedname.DistinguishedName(listOfRDNs=(rdn, ) + self.dn.split()) ldapAttrs = [] for attrType, values in attributes: ldapAttrType = pureldap.LDAPAttributeDescription(attrType) lst = [] for value in values: if (isinstance(value, six.text_type)): value = value.encode('utf-8') lst.append(pureldap.LDAPAttributeValue(value)) ldapValues = pureber.BERSet(lst) ldapAttrs.append((ldapAttrType, ldapValues)) op = pureldap.LDAPAddRequest(entry=dn.getText(), attributes=ldapAttrs) d = self.client.send(op) d.addCallback(self._cbAddDone, dn) return d
def test_add_fail_existsAlready(self): self.server.dataReceived( pureldap.LDAPMessage( pureldap.LDAPAddRequest( entry=self.thingie.dn.getText(), attributes=[ ( pureldap.LDAPAttributeDescription("objectClass"), pureber.BERSet( value=[ pureldap.LDAPAttributeValue('something'), ]) ) ]), id=2).toWire()) self.assertEqual( self.server.transport.value(), pureldap.LDAPMessage( pureldap.LDAPAddResponse( resultCode=ldaperrors.LDAPEntryAlreadyExists.resultCode, errorMessage=self.thingie.dn.getText()), id=2).toWire()) # tree did not change d = self.stuff.children() d.addCallback(lambda actual: six.assertCountEqual( self, actual, [self.thingie, self.another])) return d
def add_entry_(self, account, client): """ Attempt to add an LDAP entry. """ log = self.log log.info("Entered add_entry_()") if not 'unicodePwd' in account: account['unicodePwd'] = [encode_ad_passwd(generate_passwd())] dn, attributes = self.entry_to_attribs_(account) op = pureldap.LDAPAddRequest(entry=dn, attributes=attributes) log.debug("LDAP ADD request: {add_req}", add_req=repr(op)) unbind = False if client is None: client = yield self.get_ldap_client_() unbind = True with LDAPClientManager(client, active=unbind) as c: response = yield c.send(op) log.debug("LDAP ADD response: {add_resp}", add_resp=repr(response)) result_code = response.resultCode allowed_results = (ldaperrors.Success.resultCode, ldaperrors.LDAPEntryAlreadyExists.resultCode) if result_code not in allowed_results: msg = response.errorMessage raise Exception( "Error adding entry: result_code={}, msg={}".format( result_code, msg)) returnValue(result_code)
def test_add_success(self): dn = "cn=new,ou=stuff,dc=example,dc=com" self.server.dataReceived( pureldap.LDAPMessage( pureldap.LDAPAddRequest( entry=dn, attributes=[( pureldap.LDAPAttributeDescription("objectClass"), pureber.BERSet( value=[pureldap.LDAPAttributeValue("something")]), )], ), id=2, ).toWire()) self.assertEqual( self.server.transport.value(), pureldap.LDAPMessage(pureldap.LDAPAddResponse( resultCode=ldaperrors.Success.resultCode), id=2).toWire(), ) # tree changed d = self.stuff.children() d.addCallback(lambda actual: self.assertCountEqual( actual, [ self.thingie, self.another, inmemory.ReadOnlyInMemoryLDAPEntry( b"cn=new,ou=stuff,dc=example,dc=com", {b"objectClass": [b"something"]}, ), ], )) return d
def onConnect(client, entry): dn, attributes = entry_to_attributes(entry) op = pureldap.LDAPAddRequest(entry=dn, attributes=attributes) response = yield client.send(op) if response.resultCode != 0: log.err("DIT reported error code {}: {}".format( response.resultCode, response.errorMessage))
def addChild(self, rdn, attributes): self._checkState() rdn = distinguishedname.RelativeDistinguishedName(rdn) dn = distinguishedname.DistinguishedName(listOfRDNs=(rdn, ) + self.dn.split()) ldapAttrs = [] for attrType, values in attributes.items(): ldapAttrType = pureldap.LDAPAttributeDescription(attrType) l = [] for value in values: l.append(pureldap.LDAPAttributeValue(value)) ldapValues = pureber.BERSet(l) ldapAttrs.append((ldapAttrType, ldapValues)) op = pureldap.LDAPAddRequest(entry=str(dn), attributes=ldapAttrs) d = self.client.send(op) d.addCallback(self._cbAddDone, dn) return d