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(); });
|
||
|
});
|
||
|
});
|
||
|
});
|