From 591067ee2245eb79e776ff55df4edbbc2d0a09ea Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Fri, 3 Jun 2022 13:54:31 +0200 Subject: [PATCH] Fixup ldap group search tests --- src/test/ldap-test.js | 117 ++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 78 deletions(-) diff --git a/src/test/ldap-test.js b/src/test/ldap-test.js index 315b728e0..1204f0259 100644 --- a/src/test/ldap-test.js +++ b/src/test/ldap-test.js @@ -221,117 +221,78 @@ describe('Ldap', function () { mockApp.accessRestriction = null; const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: 'objectclass=group' }); - expect(entries.length).to.equal(4); - - // ensure order for testability - entries.sort(function (a, b) { return a.cn < b.cn; }); - - expect(entries[0].cn).to.equal('users'); - expect(entries[0].memberuid.length).to.equal(2); - expect(entries[0].memberuid).to.contain(admin.id); - expect(entries[0].memberuid).to.contain(user.id); - - expect(entries[1].cn).to.equal('admins'); - // if only one entry, the array becomes a string :-/ - expect(entries[1].memberuid).to.equal(admin.id); - - expect(entries[2].cn).to.equal('ldap-test-1'); - expect(entries[2].memberuid.length).to.equal(2); - expect(entries[2].memberuid).to.contain(admin.id); - expect(entries[2].memberuid).to.contain(user.id); - - expect(entries[3].cn).to.equal('ldap-test-2'); - expect(entries[3].memberuid).to.equal(admin.id); - }); - - it ('succeeds with cn wildcard filter', async function () { - const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: '&(objectclass=group)(cn=*)' }); - expect(entries.length).to.equal(4); - - // ensure order for testability - entries.sort(function (a, b) { return a.cn < b.cn; }); - - expect(entries[0].cn).to.equal('users'); - expect(entries[0].memberuid.length).to.equal(2); - expect(entries[0].memberuid).to.contain(admin.id); - expect(entries[0].memberuid).to.contain(user.id); - - expect(entries[1].cn).to.equal('admins'); - // if only one entry, the array becomes a string :-/ - expect(entries[1].memberuid).to.equal(admin.id); - - expect(entries[2].cn).to.equal('ldap-test-1'); - expect(entries[2].memberuid.length).to.equal(2); - expect(entries[2].memberuid).to.contain(admin.id); - expect(entries[2].memberuid).to.contain(user.id); - - expect(entries[3].cn).to.equal('ldap-test-2'); - expect(entries[3].memberuid).to.equal(admin.id); - }); - - it('succeeds with memberuid filter', async function () { - const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: '&(objectclass=group)(memberuid=' + user.id + ')' }); expect(entries.length).to.equal(2); // ensure order for testability entries.sort(function (a, b) { return a.cn < b.cn; }); - expect(entries[0].cn).to.equal('users'); + expect(entries[0].cn).to.equal('ldap-test-1'); expect(entries[0].memberuid.length).to.equal(2); + expect(entries[0].memberuid).to.contain(admin.id); + expect(entries[0].memberuid).to.contain(user.id); - expect(entries[1].cn).to.equal('ldap-test-1'); - expect(entries[1].memberuid.length).to.equal(2); - expect(entries[1].memberuid).to.contain(admin.id); - expect(entries[1].memberuid).to.contain(user.id); + expect(entries[1].cn).to.equal('ldap-test-2'); + expect(entries[1].memberuid).to.equal(admin.id); + }); + + it ('succeeds with cn wildcard filter', async function () { + const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: '&(objectclass=group)(cn=*)' }); + expect(entries.length).to.equal(2); + + // ensure order for testability + entries.sort(function (a, b) { return a.cn < b.cn; }); + + expect(entries[0].cn).to.equal('ldap-test-1'); + expect(entries[0].memberuid.length).to.equal(2); + expect(entries[0].memberuid).to.contain(admin.id); + expect(entries[0].memberuid).to.contain(user.id); + + expect(entries[1].cn).to.equal('ldap-test-2'); + expect(entries[1].memberuid).to.equal(admin.id); + }); + + it('succeeds with memberuid filter', async function () { + const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: '&(objectclass=group)(memberuid=' + user.id + ')' }); + expect(entries.length).to.equal(1); + + // ensure order for testability + entries.sort(function (a, b) { return a.cn < b.cn; }); + + expect(entries[0].cn).to.equal('ldap-test-1'); + expect(entries[0].memberuid.length).to.equal(2); + expect(entries[0].memberuid).to.contain(admin.id); + expect(entries[0].memberuid).to.contain(user.id); }); it ('does only list groups who have access', async function () { mockApp.accessRestriction = { users: [], groups: [ group.id ] }; const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: '&(objectclass=group)(cn=*)' }); + expect(entries.length).to.equal(1); // ensure order for testability entries.sort(function (a, b) { return a.cn < b.cn; }); - expect(entries.length).to.equal(3); - expect(entries[0].cn).to.equal('users'); + expect(entries[0].cn).to.equal('ldap-test-1'); expect(entries[0].memberuid.length).to.equal(2); expect(entries[0].memberuid).to.contain(admin.id); expect(entries[0].memberuid).to.contain(user.id); - - expect(entries[1].cn).to.equal('admins'); - // if only one entry, the array becomes a string :-/ - expect(entries[1].memberuid).to.equal(admin.id); - - expect(entries[2].cn).to.equal('ldap-test-1'); - expect(entries[2].memberuid.length).to.equal(2); - expect(entries[2].memberuid).to.contain(admin.id); - expect(entries[2].memberuid).to.contain(user.id); }); it ('succeeds with pagination', async function () { mockApp.accessRestriction = null; const entries = await ldapSearch('ou=groups,dc=cloudron', { filter: 'objectclass=group', paged: true }); - expect(entries.length).to.equal(4); + expect(entries.length).to.equal(2); // ensure order for testability entries.sort(function (a, b) { return a.cn < b.cn; }); - expect(entries[0].cn).to.equal('users'); + expect(entries[0].cn).to.equal('ldap-test-1'); expect(entries[0].memberuid.length).to.equal(2); expect(entries[0].memberuid).to.contain(admin.id); expect(entries[0].memberuid).to.contain(user.id); - expect(entries[1].cn).to.equal('admins'); - // if only one entry, the array becomes a string :-/ + expect(entries[1].cn).to.equal('ldap-test-2'); expect(entries[1].memberuid).to.equal(admin.id); - - expect(entries[2].cn).to.equal('ldap-test-1'); - expect(entries[2].memberuid.length).to.equal(2); - expect(entries[2].memberuid).to.contain(admin.id); - expect(entries[2].memberuid).to.contain(user.id); - - expect(entries[3].cn).to.equal('ldap-test-2'); - expect(entries[3].memberuid).to.equal(admin.id); }); });