import FirstFactorValidator = require("../../../../src/client/firstfactor/FirstFactorValidator"); import JQueryMock = require("../mocks/jquery"); import BluebirdPromise = require("bluebird"); import Assert = require("assert"); describe("test FirstFactorValidator", function () { it("should validate first factor successfully", () => { const postPromise = JQueryMock.JQueryDeferredMock(); postPromise.done.yields(); postPromise.done.returns(postPromise); const jqueryMock = JQueryMock.JQueryMock(); jqueryMock.post.returns(postPromise); return FirstFactorValidator.validate("username", "password", jqueryMock as any); }); function should_fail_first_factor_validation(statusCode: number, errorMessage: string) { const xhr = { status: statusCode }; const postPromise = JQueryMock.JQueryDeferredMock(); postPromise.fail.yields(xhr, errorMessage); postPromise.done.returns(postPromise); const jqueryMock = JQueryMock.JQueryMock(); jqueryMock.post.returns(postPromise); return FirstFactorValidator.validate("username", "password", jqueryMock as any) .then(function () { return BluebirdPromise.reject(new Error("First factor validation successfully finished while it should have not.")); }, function (err: Error) { Assert.equal(errorMessage, err.message); return BluebirdPromise.resolve(); }); } describe("should fail first factor validation", () => { it("should fail with error 500", () => { return should_fail_first_factor_validation(500, "Internal error"); }); it("should fail with error 401", () => { return should_fail_first_factor_validation(401, "Authetication failed. Please check your credentials"); }); }); });