Exemple #1
0
 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
Exemple #3
0
 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
Exemple #4
0
 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)
Exemple #5
0
 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
Exemple #6
0
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))
Exemple #7
0
    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