mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
d8ff186303
Client and server now have their own tsconfig so that the transpilation is only done on the part that is being modified. It also allows faster transpilation since tests are now excluded from tsconfig. They are compiled by ts-node during unit tests execution.
79 lines
2.8 KiB
TypeScript
79 lines
2.8 KiB
TypeScript
|
|
import { PasswordUpdater } from "../../src/lib/ldap/PasswordUpdater";
|
|
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 password update", function () {
|
|
const USERNAME = "username";
|
|
const NEW_PASSWORD = "new-password";
|
|
|
|
const ADMIN_USER_DN = "cn=admin,dc=example,dc=com";
|
|
const ADMIN_PASSWORD = "password";
|
|
|
|
let clientFactoryStub: ClientFactoryStub;
|
|
let adminClientStub: ClientStub;
|
|
|
|
let passwordUpdater: PasswordUpdater;
|
|
let ldapConfig: LdapConfiguration;
|
|
let dovehash: any;
|
|
|
|
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: "cn={0}",
|
|
mail_attribute: "mail",
|
|
users_filter: "cn={0}"
|
|
};
|
|
|
|
dovehash = {
|
|
encode: Sinon.stub()
|
|
};
|
|
|
|
passwordUpdater = new PasswordUpdater(ldapConfig, clientFactoryStub);
|
|
});
|
|
|
|
describe("success", function () {
|
|
it("should update the password successfully", function () {
|
|
clientFactoryStub.createStub.withArgs(ADMIN_USER_DN, ADMIN_PASSWORD)
|
|
.returns(adminClientStub);
|
|
|
|
dovehash.encode.returns("{SSHA}AQmxaKfobGY9HSQa6aDYkAWOgPGNhGYn");
|
|
adminClientStub.modifyPasswordStub.withArgs(USERNAME, NEW_PASSWORD).returns(BluebirdPromise.resolve());
|
|
adminClientStub.openStub.returns(BluebirdPromise.resolve());
|
|
adminClientStub.closeStub.returns(BluebirdPromise.resolve());
|
|
|
|
return passwordUpdater.updatePassword(USERNAME, NEW_PASSWORD);
|
|
});
|
|
});
|
|
|
|
describe("failure", function () {
|
|
it("should fail updating password when modify operation fails", function () {
|
|
clientFactoryStub.createStub.withArgs(ADMIN_USER_DN, ADMIN_PASSWORD)
|
|
.returns(adminClientStub);
|
|
|
|
dovehash.encode.returns("{SSHA}AQmxaKfobGY9HSQa6aDYkAWOgPGNhGYn");
|
|
adminClientStub.modifyPasswordStub.withArgs(USERNAME, NEW_PASSWORD)
|
|
.returns(BluebirdPromise.reject(new Error("Error while updating password")));
|
|
adminClientStub.openStub.returns(BluebirdPromise.resolve());
|
|
adminClientStub.closeStub.returns(BluebirdPromise.resolve());
|
|
|
|
return passwordUpdater.updatePassword(USERNAME, NEW_PASSWORD)
|
|
.then(function () { return BluebirdPromise.reject(new Error("should not be here")); })
|
|
.catch(function () { return BluebirdPromise.resolve(); });
|
|
});
|
|
});
|
|
}); |