opds-web-client
Version:
138 lines (137 loc) • 6.17 kB
JavaScript
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");
describe("BasicAuthForm", function () {
describe("rendering", function () {
var wrapper, provider;
beforeEach(function () {
provider = {
name: "Test Basic Auth",
plugin: BasicAuthPlugin_1.default,
method: {
labels: {
login: "code name",
password: "secret password"
}
}
};
wrapper = enzyme_1.shallow(React.createElement(BasicAuthForm_1.default, { hide: sinon_1.stub(), saveCredentials: sinon_1.stub(), cancel: 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[type='text']");
chai_1.expect(input.prop("placeholder")).to.equal("code name");
});
it("shows password input", function () {
var input = wrapper.find("input[type='password']");
chai_1.expect(input.prop("placeholder")).to.equal("secret password");
});
it("shows submit button", function () {
var input = wrapper.find("input[type='submit']");
chai_1.expect(input.prop("value")).to.equal("Submit");
});
it("shows cancel button", function () {
var button = wrapper.find("input[type='reset']");
chai_1.expect(button.prop("value")).to.equal("Cancel");
});
it("shows error", function () {
var error = wrapper.find(".error");
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 = sinon_1.stub();
saveCredentials = sinon_1.stub();
callback = sinon_1.stub();
cancel = sinon_1.stub();
provider = {
name: "Test Basic Auth",
plugin: BasicAuthPlugin_1.default,
method: {
labels: {
login: "code name",
password: "secret password"
}
}
};
wrapper = 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();
chai_1.expect(isValid).to.equal(false);
chai_1.expect(wrapper.state("error")).to.equal("code name and secret password are required");
// password blank
var username = wrapper.find("input[type='text']").get(0);
username.value = "doubleohseven";
isValid = wrapper.instance().validate();
chai_1.expect(isValid).to.equal(false);
chai_1.expect(wrapper.state("error")).to.equal("code name and secret password are required");
// username blank
username.value = "";
var password = wrapper.find("input[type='password']").get(0);
password.value = "thenameisbond";
isValid = wrapper.instance().validate();
chai_1.expect(isValid).to.equal(false);
chai_1.expect(wrapper.state("error")).to.equal("code name and secret password are required");
// nothing blank
username.value = "doubleohseven";
isValid = wrapper.instance().validate();
chai_1.expect(isValid).to.equal(true);
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']").get(0);
username.value = "doubleohseven";
password = wrapper.find("input[type='password']").get(0);
password.value = "thenameisbond";
credentials = wrapper.instance().generateCredentials("doubleohseven", "thenameisbond");
validate = sinon_1.stub().returns(true);
wrapper.instance().validate = validate;
form = wrapper.find("form");
form.simulate("submit");
});
it("validates", function () {
chai_1.expect(validate.callCount).to.equal(1);
});
it("saves credentials", function () {
chai_1.expect(saveCredentials.callCount).to.equal(1);
chai_1.expect(saveCredentials.args[0][0]).to.deep.equal({
provider: "Test Basic Auth",
credentials: credentials
});
});
it("hides", function () {
chai_1.expect(hide.callCount).to.equal(1);
});
it("executes callback", function () {
chai_1.expect(callback.callCount).to.equal(1);
});
});
it("updates error from props", function () {
wrapper.setProps(Object.assign({}, wrapper.props(), { error: "new error" }));
chai_1.expect(wrapper.state("error")).to.equal("new error");
});
it("cancels", function () {
var cancelButton = wrapper.find("input[type='reset']");
cancelButton.simulate("click");
chai_1.expect(cancel.callCount).to.equal(1);
});
});
});
;