diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 6a206e1..31108b3 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -31,9 +31,9 @@ jobs: env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Pull Docker image - run: docker pull "docker.pkg.github.com/ldapjs/docker-test-openldap/openldap:1.0" + run: docker pull "docker.pkg.github.com/ldapjs/docker-test-openldap/openldap:latest" - name: Start OpenLDAP service - run: docker run -it -d --name openldap -p 389:389 -p 636:636 docker.pkg.github.com/ldapjs/docker-test-openldap/openldap:1.0 + run: docker run -it -d --name openldap -p 389:389 -p 636:636 docker.pkg.github.com/ldapjs/docker-test-openldap/openldap:latest - name: Install Packages run: npm install diff --git a/.taprc b/.taprc index d363411..c7447d3 100644 --- a/.taprc +++ b/.taprc @@ -1,4 +1,6 @@ esm: false +jsx: false +ts: false files: - 'test/**/*.test.js' diff --git a/docker-compose.yml b/docker-compose.yml index 86dbede..813c3b9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: openldap: - image: docker.pkg.github.com/ldapjs/docker-test-openldap/openldap:1.0 + image: docker.pkg.github.com/ldapjs/docker-test-openldap/openldap:latest ports: - 389:389 - 636:636 diff --git a/package.json b/package.json index 07c7c6e..ee1a1f4 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "husky": "^3.0.4", "snazzy": "^8.0.0", "standard": "^14.0.2", - "tap": "^14.6.1", + "tap": "14.10.1", "uuid": "^3.3.3" }, "scripts": { diff --git a/test-integration/client/issues.test.js b/test-integration/client/issues.test.js index 0992f65..4abcc3b 100644 --- a/test-integration/client/issues.test.js +++ b/test-integration/client/issues.test.js @@ -56,3 +56,36 @@ tap.test('whois works correctly (issue #370)', t => { }) }) }) + +tap.test('can access large groups (issue #582)', t => { + const client = ldapjs.createClient({ url: baseURL }) + client.bind('cn=admin,dc=planetexpress,dc=com ', 'GoodNewsEveryone', (err) => { + t.error(err) + const searchOpts = { + scope: 'sub', + filter: '(&(objectClass=group)(cn=large_group))' + } + client.search('ou=large_ou,dc=planetexpress,dc=com', searchOpts, (err, response) => { + t.error(err) + + const results = [] + response.on('searchEntry', (entry) => { + results.push(entry) + }) + response.on('error', t.error) + response.on('end', (result) => { + t.is(result.status, 0) + t.is(results.length === 1, true) + t.ok(results[0].attributes) + + const memberAttr = results[0].attributes.find(a => a.type === 'member') + t.ok(memberAttr) + t.ok(memberAttr.vals) + t.type(memberAttr.vals, Array) + t.is(memberAttr.vals.length, 2000) + + client.unbind(t.end) + }) + }) + }) +})