mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
66449eedb0
Previously, string "{0}" was replaced by the user dn in the groups_filter attributes of the LDAP configuration. However, if the groups children only have a memberUid attribute, one would like to use the username instead of the user dn. Since the user dn can be built from the username, "{0}" is now replaced by the username instead of the user dn so that an LDAP relying on attribute 'memberUid' can be used.
75 lines
2.6 KiB
TypeScript
75 lines
2.6 KiB
TypeScript
|
|
import { GroupsRetriever } from "../../src/lib/ldap/GroupsRetriever";
|
|
import { LdapConfiguration } from "../../src/lib/configuration/Configuration";
|
|
|
|
import Sinon = require("sinon");
|
|
import BluebirdPromise = require("bluebird");
|
|
import Assert = require("assert");
|
|
|
|
import { ClientFactoryStub } from "../mocks/ldap/ClientFactoryStub";
|
|
import { ClientStub } from "../mocks/ldap/ClientStub";
|
|
|
|
describe("test groups retriever", function () {
|
|
const USERNAME = "username";
|
|
const ADMIN_USER_DN = "cn=admin,dc=example,dc=com";
|
|
const ADMIN_PASSWORD = "password";
|
|
|
|
let clientFactoryStub: ClientFactoryStub;
|
|
let adminClientStub: ClientStub;
|
|
|
|
let groupsRetriever: GroupsRetriever;
|
|
let ldapConfig: LdapConfiguration;
|
|
|
|
beforeEach(function () {
|
|
clientFactoryStub = new ClientFactoryStub();
|
|
adminClientStub = new ClientStub();
|
|
|
|
ldapConfig = {
|
|
url: "http://ldap",
|
|
user: ADMIN_USER_DN,
|
|
password: ADMIN_PASSWORD,
|
|
users_dn: "ou=users,dc=example,dc=com",
|
|
groups_dn: "ou=groups,dc=example,dc=com",
|
|
group_name_attribute: "cn",
|
|
groups_filter: "member=cn={0},ou=users,dc=example,dc=com",
|
|
mail_attribute: "mail",
|
|
users_filter: "cn={0}"
|
|
};
|
|
|
|
groupsRetriever = new GroupsRetriever(ldapConfig, clientFactoryStub);
|
|
});
|
|
|
|
describe("success", function () {
|
|
it("should retrieve groups successfully", function () {
|
|
clientFactoryStub.createStub.withArgs(ADMIN_USER_DN, ADMIN_PASSWORD)
|
|
.returns(adminClientStub);
|
|
|
|
// admin connects successfully
|
|
adminClientStub.openStub.returns(BluebirdPromise.resolve());
|
|
adminClientStub.closeStub.returns(BluebirdPromise.resolve());
|
|
|
|
adminClientStub.searchGroupsStub.withArgs(USERNAME)
|
|
.returns(BluebirdPromise.resolve(["user@example.com"]));
|
|
|
|
return groupsRetriever.retrieve(USERNAME);
|
|
});
|
|
});
|
|
|
|
describe("failure", function () {
|
|
it("should fail retrieving groups when search operation fails", function () {
|
|
clientFactoryStub.createStub.withArgs(ADMIN_USER_DN, ADMIN_PASSWORD)
|
|
.returns(adminClientStub);
|
|
|
|
// admin connects successfully
|
|
adminClientStub.openStub.returns(BluebirdPromise.resolve());
|
|
adminClientStub.closeStub.returns(BluebirdPromise.resolve());
|
|
|
|
adminClientStub.searchGroupsStub.withArgs(USERNAME)
|
|
.returns(BluebirdPromise.reject(new Error("Error while searching groups")));
|
|
|
|
return groupsRetriever.retrieve(USERNAME)
|
|
.then(function () { return BluebirdPromise.reject(new Error("Should not be here")); })
|
|
.catch(function () { return BluebirdPromise.resolve(); });
|
|
});
|
|
});
|
|
}); |