UNPKG

opds-web-client

Version:
137 lines (136 loc) 6.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var chai_1 = require("chai"); var sinon_1 = require("sinon"); var React = require("react"); var enzyme_1 = require("enzyme"); var BasicAuthForm_1 = require("../BasicAuthForm"); var BasicAuthPlugin_1 = require("../../BasicAuthPlugin"); var auth_1 = require("../../utils/auth"); describe("BasicAuthForm", function () { describe("rendering", function () { var wrapper, provider; beforeEach(function () { provider = { id: "id", plugin: BasicAuthPlugin_1.default, method: { description: "Test Basic Auth", labels: { login: "code name", password: "secret password" } } }; wrapper = (0, enzyme_1.shallow)(React.createElement(BasicAuthForm_1.default, { hide: (0, sinon_1.stub)(), saveCredentials: (0, sinon_1.stub)(), cancel: (0, sinon_1.stub)(), error: "you forgot the secret password! what kind of spy arre you?", provider: provider })); }); it("shows username input", function () { var input = wrapper.find("input").at(0); (0, chai_1.expect)(input.prop("aria-label")).to.equal("Input for code name"); }); it("shows password input", function () { var input = wrapper.find("input").at(1); (0, chai_1.expect)(input.prop("aria-label")).to.equal("Input for secret password"); }); it("shows submit button", function () { var input = wrapper.find("input[type='submit']"); (0, chai_1.expect)(input.prop("value")).to.equal("Submit"); }); it("shows cancel button", function () { var button = wrapper.find("input[type='reset']"); (0, chai_1.expect)(button.prop("value")).to.equal("Cancel"); }); it("shows error", function () { var error = wrapper.find(".auth-error"); (0, chai_1.expect)(error.text()).to.equal("you forgot the secret password! what kind of spy arre you?"); }); }); describe("behavior", function () { var wrapper; var provider; var hide; var saveCredentials; var callback; var cancel; beforeEach(function () { hide = (0, sinon_1.stub)(); saveCredentials = (0, sinon_1.stub)(); callback = (0, sinon_1.stub)(); cancel = (0, sinon_1.stub)(); provider = { id: "id", plugin: BasicAuthPlugin_1.default, method: { description: "Test Basic Auth", labels: { login: "code name", password: "secret password" } } }; wrapper = (0, enzyme_1.mount)(React.createElement(BasicAuthForm_1.default, { hide: hide, saveCredentials: saveCredentials, callback: callback, cancel: cancel, error: "you forgot the secret password! what kind of spy arre you?", provider: provider })); }); it("validates", function () { // both fields blank var isValid = wrapper.instance().validate(); (0, chai_1.expect)(isValid).to.equal(false); (0, chai_1.expect)(wrapper.state("error")).to.equal("code name is required"); // username blank var username = wrapper.find("input[type='text']").getDOMNode(); username.value = ""; var password = wrapper.find("input[type='password']").getDOMNode(); password.value = "thenameisbond"; isValid = wrapper.instance().validate(); (0, chai_1.expect)(isValid).to.equal(false); (0, chai_1.expect)(wrapper.state("error")).to.equal("code name is required"); // // nothing blank username.value = "doubleohseven"; isValid = wrapper.instance().validate(username.value); (0, chai_1.expect)(isValid).to.equal(true); (0, chai_1.expect)(wrapper.state("error")).to.equal(null); }); describe("submission", function () { var validate; var form; var credentials; var username; var password; beforeEach(function () { username = wrapper.find("input[type='text']").getDOMNode(); username.value = "doubleohseven"; password = wrapper.find("input[type='password']").getDOMNode(); password.value = "thenameisbond"; credentials = (0, auth_1.generateCredentials)("doubleohseven", "thenameisbond"); validate = (0, sinon_1.stub)().returns(true); wrapper.instance().validate = validate; form = wrapper.find("form"); form.simulate("submit"); }); it("validates", function () { (0, chai_1.expect)(validate.callCount).to.equal(1); }); it("saves credentials", function () { (0, chai_1.expect)(saveCredentials.callCount).to.equal(1); (0, chai_1.expect)(saveCredentials.args[0][0]).to.deep.equal({ provider: "id", credentials: credentials }); }); it("hides", function () { (0, chai_1.expect)(hide.callCount).to.equal(1); }); it("executes callback", function () { (0, chai_1.expect)(callback.callCount).to.equal(1); }); }); it("updates error from props", function () { wrapper.setProps(Object.assign({}, wrapper.props(), { error: "new error" })); (0, chai_1.expect)(wrapper.state("error")).to.equal("new error"); }); it("cancels", function () { var cancelButton = wrapper.find("input[type='reset']"); cancelButton.simulate("click"); (0, chai_1.expect)(cancel.callCount).to.equal(1); }); }); });