Beispiel #1
0
 def test_modify(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(
             pureldap.LDAPModifyRequest(
                 self.stuff.dn.getText(),
                 modification=[
                     delta.Add("foo", ["bar"]).asLDAP(),
                 ],
             ),
             id=2,
         ).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(
             pureldap.LDAPModifyResponse(
                 resultCode=ldaperrors.Success.resultCode),
             id=2,
         ).toWire(),
     )
     # tree changed
     self.assertEqual(
         self.stuff,
         inmemory.ReadOnlyInMemoryLDAPEntry(
             "ou=stuff,dc=example,dc=com",
             {
                 b"objectClass": [b"a", b"b"],
                 b"ou": [b"stuff"],
                 b"foo": [b"bar"]
             },
         ),
     )
Beispiel #2
0
 def test_modifyDN_rdnOnly_deleteOldRDN_success(self):
     newrdn = "cn=thingamagic"
     self.server.dataReceived(
         pureldap.LDAPMessage(
             pureldap.LDAPModifyDNRequest(entry=self.thingie.dn.getText(),
                                          newrdn=newrdn,
                                          deleteoldrdn=True),
             id=2,
         ).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(
             pureldap.LDAPModifyDNResponse(
                 resultCode=ldaperrors.Success.resultCode),
             id=2,
         ).toWire(),
     )
     # tree changed
     d = self.stuff.children()
     d.addCallback(lambda actual: self.assertCountEqual(
         actual,
         [
             inmemory.ReadOnlyInMemoryLDAPEntry(
                 "%s,ou=stuff,dc=example,dc=com" % newrdn,
                 {
                     "objectClass": ["a", "b"],
                     "cn": ["thingamagic"]
                 },
             ),
             self.another,
         ],
     ))
     return d
Beispiel #3
0
    def test_bind_noMatchingServicesFound_fallback_success(self):
        server = self.createServer(
            services=['svc1',
                      'svc2',
                      'svc3',
                      ],
            fallback=True,
            responses=[
            [ pureldap.LDAPSearchResultDone(ldaperrors.Success.resultCode) ],
            [ pureldap.LDAPSearchResultDone(ldaperrors.Success.resultCode) ],
            [ pureldap.LDAPSearchResultDone(ldaperrors.Success.resultCode) ],
            [ pureldap.LDAPBindResponse(resultCode=ldaperrors.Success.resultCode) ],
            ])
        server.dataReceived(str(pureldap.LDAPMessage(pureldap.LDAPBindRequest(dn='cn=jack,dc=example,dc=com', auth='s3krit'), id=4)))
        reactor.iterate() #TODO
        client = server.client

        client.assertSent(
            pureldap.LDAPSearchRequest(baseObject='dc=example,dc=com',
                                       derefAliases=0,
                                       sizeLimit=0,
                                       timeLimit=0,
                                       typesOnly=0,
                                       filter=ldapfilter.parseFilter('(&'
                                                                     +'(objectClass=serviceSecurityObject)'
                                                                     +'(owner=cn=jack,dc=example,dc=com)'
                                                                     +'(cn=svc1)'
                                                                     +('(|(!(validFrom=*))(validFrom<=%s))' % server.now)
                                                                     +('(|(!(validUntil=*))(validUntil>=%s))' % server.now)
                                                                     +')'),
                                       attributes=('1.1',)),
            pureldap.LDAPSearchRequest(baseObject='dc=example,dc=com',
                                       derefAliases=0,
                                       sizeLimit=0,
                                       timeLimit=0,
                                       typesOnly=0,
                                       filter=ldapfilter.parseFilter('(&'
                                                                     +'(objectClass=serviceSecurityObject)'
                                                                     +'(owner=cn=jack,dc=example,dc=com)'
                                                                     +'(cn=svc2)'
                                                                     +('(|(!(validFrom=*))(validFrom<=%s))' % server.now)
                                                                     +('(|(!(validUntil=*))(validUntil>=%s))' % server.now)
                                                                     +')'),
                                       attributes=('1.1',)),
            pureldap.LDAPSearchRequest(baseObject='dc=example,dc=com',
                                       derefAliases=0,
                                       sizeLimit=0,
                                       timeLimit=0,
                                       typesOnly=0,
                                       filter=ldapfilter.parseFilter('(&'
                                                                     +'(objectClass=serviceSecurityObject)'
                                                                     +'(owner=cn=jack,dc=example,dc=com)'
                                                                     +'(cn=svc3)'
                                                                     +('(|(!(validFrom=*))(validFrom<=%s))' % server.now)
                                                                     +('(|(!(validUntil=*))(validUntil>=%s))' % server.now)
                                                                     +')'),
                                       attributes=('1.1',)),
            pureldap.LDAPBindRequest(dn='cn=jack,dc=example,dc=com', auth='s3krit'))
        self.assertEquals(server.transport.value(),
                          str(pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=ldaperrors.Success.resultCode), id=4)))
Beispiel #4
0
 def test_unbind_clientUnbinds(self):
     server = self.createServer(
         [
             pureldap.LDAPBindResponse(resultCode=0),
         ],
         [],
     )
     server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=2).toWire())
     reactor.iterate()  # TODO
     client = server.client
     client.assertSent(pureldap.LDAPBindRequest())
     self.assertEqual(
         server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                              id=2).toWire(),
     )
     server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPUnbindRequest(), id=3).toWire())
     server.connectionLost(error.ConnectionDone)
     reactor.iterate()  # TODO
     client.assertSent(pureldap.LDAPBindRequest(),
                       pureldap.LDAPUnbindRequest())
     self.assertEqual(
         server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                              id=2).toWire(),
     )
Beispiel #5
0
 def test_rootDSE(self):
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchRequest(
                 baseObject='',
                 scope=pureldap.LDAP_SCOPE_baseObject,
                 filter=pureldap.LDAPFilter_present('objectClass'),
             ),
                                  id=2)))
     self.assertEquals(
         self.server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                 objectName='',
                 attributes=[
                     ('supportedLDAPVersion', ['3']),
                     ('namingContexts', ['dc=example,dc=com']),
                     ('supportedExtension', [
                         pureldap.LDAPPasswordModifyRequest.oid,
                     ]),
                 ]),
                                  id=2)) +
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultDone(
                 resultCode=ldaperrors.Success.resultCode),
                                  id=2)),
     )
Beispiel #6
0
 def test_search_scope_oneLevel(self):
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchRequest(
                 baseObject='ou=stuff,dc=example,dc=com',
                 scope=pureldap.LDAP_SCOPE_singleLevel,
             ),
                                  id=2)))
     self.assertEquals(
         self.server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                 objectName='cn=thingie,ou=stuff,dc=example,dc=com',
                 attributes=[
                     ('objectClass', ['a', 'b']),
                     ('cn', ['thingie']),
                 ]),
                                  id=2)) +
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                 objectName='cn=another,ou=stuff,dc=example,dc=com',
                 attributes=[
                     ('objectClass', ['a', 'b']),
                     ('cn', ['another']),
                 ]),
                                  id=2)) +
         str(
             pureldap.LDAPMessage(
                 pureldap.LDAPSearchResultDone(resultCode=0), id=2)),
     )
Beispiel #7
0
 def test_bind(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=4).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                              id=4).toWire())
Beispiel #8
0
    def test_send_multiResponse_with_handler(self):
        client, transport = self.create_test_client()
        client.debug = True
        op = self.create_test_search_req()
        results = []

        def collect_result_(result):
            results.append(result)
            if isinstance(result, pureldap.LDAPSearchResultDone):
                return True
            return False

        client.send_multiResponse(op, collect_result_)
        expected_value = pureldap.LDAPMessage(op)
        expected_value.id -= 1
        expected_bytestring = expected_value.toWire()
        self.assertEqual(transport.value(), expected_bytestring)
        response = pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
            "cn=foo,ou=baz,dc=example,dc=net", {}),
                                        id=expected_value.id)
        resp_bytestring = response.toWire()
        client.dataReceived(resp_bytestring)
        response = pureldap.LDAPMessage(pureldap.LDAPSearchResultDone(0),
                                        id=expected_value.id)
        resp_bytestring = response.toWire()
        client.dataReceived(resp_bytestring)
        self.assertEqual(response.value, results[1])
Beispiel #9
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
Beispiel #10
0
 def test_unbind_clientEOF(self):
     server = self.createServer(
         [
             pureldap.LDAPBindResponse(resultCode=0),
         ],
         [],
     )
     server.dataReceived(
         str(pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=2)))
     reactor.iterate()  #TODO
     client = server.client
     client.assertSent(pureldap.LDAPBindRequest())
     self.assertEquals(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                                  id=2)))
     server.connectionLost(error.ConnectionDone)
     reactor.iterate()  #TODO
     client.assertSent(pureldap.LDAPBindRequest(),
                       'fake-unbind-by-LDAPClientTestDriver')
     self.assertEquals(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                                  id=2)))
Beispiel #11
0
 def test_search_scope_wholeSubtree(self):
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchRequest(
                 baseObject='ou=stuff,dc=example,dc=com',
                 scope=pureldap.LDAP_SCOPE_wholeSubtree),
                                  id=2)))
     self.assertItemsEqual(
         self._makeResultList(self.server.transport.value()), [
             str(
                 pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                     objectName='ou=stuff,dc=example,dc=com',
                     attributes=[('objectClass', ['a', 'b']),
                                 ('ou', ['stuff'])]),
                                      id=2)),
             str(
                 pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                     objectName='cn=another,ou=stuff,dc=example,dc=com',
                     attributes=[('objectClass', ['a', 'b']),
                                 ('cn', ['another'])]),
                                      id=2)),
             str(
                 pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                     objectName='cn=thingie,ou=stuff,dc=example,dc=com',
                     attributes=[('objectClass', ['a', 'b']),
                                 ('cn', ['thingie'])]),
                                      id=2)),
             str(
                 pureldap.LDAPMessage(
                     pureldap.LDAPSearchResultDone(resultCode=0), id=2))
         ])
Beispiel #12
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
Beispiel #13
0
 def test_unbind_clientEOF(self):
     """
     The server disconects correctly when the client terminates the
     connection without sending an unbind request.
     """
     server = self.createServer([pureldap.LDAPBindResponse(resultCode=0)])
     server.dataReceived(
         str(pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=2)))
     server.reactor.advance(1)
     client = server.client
     client.assertSent(pureldap.LDAPBindRequest())
     self.assertEqual(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                                  id=2)))
     server.connectionLost(error.ConnectionDone)
     server.reactor.advance(1)
     client.assertSent(pureldap.LDAPBindRequest(),
                       'fake-unbind-by-LDAPClientTestDriver')
     self.assertEqual(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                                  id=2)))
Beispiel #14
0
 def test_unbind_clientUnbinds(self):
     """
     The server disconnects from the client gracefully when the
     client signals its intent to unbind.
     """
     server = self.createServer(
         [pureldap.LDAPBindResponse(resultCode=0)],
         [],
     )
     server.dataReceived(
         str(pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=2)))
     server.reactor.advance(1)
     client = server.client
     client.assertSent(pureldap.LDAPBindRequest())
     self.assertEqual(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                                  id=2)))
     server.dataReceived(
         str(pureldap.LDAPMessage(pureldap.LDAPUnbindRequest(), id=3)))
     server.connectionLost(error.ConnectionDone)
     server.reactor.advance(1)
     client.assertSent(pureldap.LDAPBindRequest(),
                       pureldap.LDAPUnbindRequest())
     self.assertEqual(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0),
                                  id=2)))
Beispiel #15
0
 def test_modify(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(
             pureldap.LDAPModifyRequest(
                 self.stuff.dn.getText(),
                 modification=[
                     delta.Add('foo', ['bar']).asLDAP(),
                 ]),
             id=2).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(
             pureldap.LDAPModifyResponse(
                 resultCode=ldaperrors.Success.resultCode),
             id=2).toWire())
     # tree changed
     self.assertEqual(
         self.stuff,
         inmemory.ReadOnlyInMemoryLDAPEntry(
             'ou=stuff,dc=example,dc=com',
             {
                 b'objectClass': [b'a', b'b'],
                 b'ou': [b'stuff'],
                 b'foo': [b'bar']
             }))
Beispiel #16
0
    def test_search_matchAll_manyResults(self):
        self.server.dataReceived(
            str(
                pureldap.LDAPMessage(pureldap.LDAPSearchRequest(
                    baseObject='ou=stuff,dc=example,dc=com'),
                                     id=2)))

        six.assertCountEqual(
            self, [
                str(
                    pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                        objectName='ou=stuff,dc=example,dc=com',
                        attributes=[('objectClass', ['a', 'b']),
                                    ('ou', ['stuff'])]),
                                         id=2)),
                str(
                    pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                        objectName='cn=another,ou=stuff,dc=example,dc=com',
                        attributes=[('objectClass', ['a', 'b']),
                                    ('cn', ['another'])]),
                                         id=2)),
                str(
                    pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                        objectName='cn=thingie,ou=stuff,dc=example,dc=com',
                        attributes=[('objectClass', ['a', 'b']),
                                    ('cn', ['thingie'])]),
                                         id=2)),
                str(
                    pureldap.LDAPMessage(
                        pureldap.LDAPSearchResultDone(resultCode=0), id=2))
            ], self._makeResultList(self.server.transport.value()))
Beispiel #17
0
 def test_modifyDN_rdnOnly_deleteOldRDN_success(self):
     newrdn = 'cn=thingamagic'
     self.server.dataReceived(
         pureldap.LDAPMessage(
             pureldap.LDAPModifyDNRequest(
                 entry=self.thingie.dn.getText(),
                 newrdn=newrdn,
                 deleteoldrdn=True),
             id=2).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(
             pureldap.LDAPModifyDNResponse(
                 resultCode=ldaperrors.Success.resultCode),
             id=2).toWire())
     # tree changed
     d = self.stuff.children()
     d.addCallback(lambda actual: six.assertCountEqual(
         self,
         actual,
         [
             inmemory.ReadOnlyInMemoryLDAPEntry(
                 '%s,ou=stuff,dc=example,dc=com' % newrdn,
                 {
                     'objectClass': ['a', 'b'],
                     'cn': ['thingamagic']
                 }),
             self.another,
         ]))
     return d
Beispiel #18
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
Beispiel #19
0
    def assertSearchResults(self, results=None, resultCode=0):
        """
        Shortcut for checking results returned by test server on LDAPSearchRequest.
        Results must be prepared as a list of dictionaries with 'objectName' and 'attributes' keys
        """
        if results is None:
            results = []

        messages = []

        for result in results:
            message = pureldap.LDAPMessage(
                pureldap.LDAPSearchResultEntry(
                    objectName=result['objectName'],
                    attributes=result['attributes']
                ),
                id=2
            )
            messages.append(message)

        messages.append(
            pureldap.LDAPMessage(
                pureldap.LDAPSearchResultDone(resultCode=resultCode),
                id=2
            )
        )
        six.assertCountEqual(
            self,
            self._makeResultList(self.server.transport.value()),
            [msg.toWire() for msg in messages]
        )
Beispiel #20
0
 def test_bind(self):
     server = self.createServer([ pureldap.LDAPBindResponse(resultCode=0),
                                  ])
     server.dataReceived(str(pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=4)))
     reactor.iterate() #TODO
     self.assertEqual(server.transport.value(),
                       str(pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0), id=4)))
Beispiel #21
0
 def test_intercepted_search_request(self):
     """
     When performing an LDAP search against the server; the requests are
     intercepted and custom responses are written to the transport.
     """
     server = self.createServer([pureldap.LDAPBindResponse(resultCode=0)], [
         pureldap.LDAPSearchResultEntry('cn=foo,dc=example,dc=com',
                                        [('a', ['b'])]),
         pureldap.LDAPSearchResultEntry('cn=bar,dc=example,dc=com',
                                        [('b', ['c'])]),
         pureldap.LDAPSearchResultDone(ldaperrors.Success.resultCode),
     ],
                                protocol=RequestInterceptingProxy)
     server.responses = [
         pureldap.LDAPSearchResultEntry('cn=xyzzy,dc=example,dc=com',
                                        [('frobnitz', ['zork'])]),
         pureldap.LDAPSearchResultDone(ldaperrors.Success.resultCode)
     ]
     server.dataReceived(
         str(pureldap.LDAPMessage(pureldap.LDAPSearchRequest(), id=1)))
     server.reactor.advance(1)
     self.assertEqual(len(server.clientTestDriver.sent), 0)
     self.assertEqual(
         server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultEntry(
                 'cn=xyzzy,dc=example,dc=com', [('frobnitz', ['zork'])]),
                                  id=1)) +
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultDone(
                 ldaperrors.Success.resultCode),
                                  id=1)))
Beispiel #22
0
 def test_modifyDN_rdnOnly_noDeleteOldRDN_success(self):
     newrdn = 'cn=thingamagic'
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(pureldap.LDAPModifyDNRequest(
                 entry=self.thingie.dn, newrdn=newrdn, deleteoldrdn=False),
                                  id=2)))
     self.assertEquals(
         self.server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPModifyDNResponse(
                 resultCode=ldaperrors.Success.resultCode),
                                  id=2)))
     # tree changed
     d = self.stuff.children()
     d.addCallback(
         self.assertItemsEqual, {
             self.another,
             inmemory.ReadOnlyInMemoryLDAPEntry(
                 '%s,ou=stuff,dc=example,dc=com' % newrdn, {
                     'objectClass': ['a', 'b'],
                     'cn': ['thingamagic', 'thingie']
                 })
         })
     return d
Beispiel #23
0
 def test_bind_invalidCredentials_nonExisting(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPBindRequest(
             dn='cn=non-existing,dc=example,dc=com', auth=b'invalid'),
                              id=78).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPBindResponse(
             resultCode=ldaperrors.LDAPInvalidCredentials.resultCode),
                              id=78).toWire())
Beispiel #24
0
 def test_bind_badVersion_4_anonymous(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPBindRequest(version=4),
                              id=32).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPBindResponse(
             resultCode=ldaperrors.LDAPProtocolError.resultCode,
             errorMessage='Version 4 not supported'),
                              id=32).toWire())
Beispiel #25
0
 def test_bind(self):
     """
     When binding to the server an `LDAPBindResponse` with a successful
     result code.is written to the transport.
     """
     server = self.createServer([pureldap.LDAPBindResponse(resultCode=0)])
     server.dataReceived(str(pureldap.LDAPMessage(pureldap.LDAPBindRequest(), id=4)))
     server.reactor.advance(1)
     self.assertEqual(server.transport.value(),
                       str(pureldap.LDAPMessage(pureldap.LDAPBindResponse(resultCode=0), id=4)))
Beispiel #26
0
 def test_bind_invalidCredentials_badPassword(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPBindRequest(
             dn='cn=thingie,ou=stuff,dc=example,dc=com', auth=b'invalid'),
                              id=734).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPBindResponse(
             resultCode=ldaperrors.LDAPInvalidCredentials.resultCode),
                              id=734).toWire())
Beispiel #27
0
 def test_extendedRequest_unknown(self):
     self.server.dataReceived(
         pureldap.LDAPMessage(pureldap.LDAPExtendedRequest(
             requestName='42.42.42', requestValue='foo'),
                              id=2).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(pureldap.LDAPExtendedResponse(
             resultCode=ldaperrors.LDAPProtocolError.resultCode,
             errorMessage='Unknown extended request: 42.42.42'),
                              id=2).toWire())
Beispiel #28
0
 def test_control_unknown_critical(self):
     self.server.dataReceived(pureldap.LDAPMessage(
         pureldap.LDAPBindRequest(), id=2,
         controls=[('42.42.42.42', True, None),
                   ]).toWire())
     self.assertEqual(
         self.server.transport.value(),
         pureldap.LDAPMessage(
             pureldap.LDAPBindResponse(
                 resultCode=ldaperrors.LDAPUnavailableCriticalExtension.resultCode,
                 errorMessage='Unknown control 42.42.42.42'),
             id=2).toWire())
Beispiel #29
0
 def test_search_outOfTree(self):
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(
                 pureldap.LDAPSearchRequest(baseObject='dc=invalid'),
                 id=2)))
     self.assertEquals(
         self.server.transport.value(),
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchResultDone(
                 resultCode=ldaperrors.LDAPNoSuchObject.resultCode),
                                  id=2)))
Beispiel #30
0
 def test_search_matchAll_oneResult_filteredNoAttribsRemaining(self):
     self.server.dataReceived(
         str(
             pureldap.LDAPMessage(pureldap.LDAPSearchRequest(
                 baseObject='cn=thingie,ou=stuff,dc=example,dc=com',
                 attributes=['xyzzy']),
                                  id=2)))
     self.assertEquals(
         self.server.transport.value(),
         str(
             pureldap.LDAPMessage(
                 pureldap.LDAPSearchResultDone(resultCode=0), id=2)))