UNPKG

opds-web-client

Version:
122 lines (121 loc) 6.25 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 AuthProviderSelectionForm_1 = require("../AuthProviderSelectionForm"); var BasicAuthPlugin_1 = require("../../BasicAuthPlugin"); var BasicAuthForm_1 = require("../BasicAuthForm"); var BasicAuthButton_1 = require("../BasicAuthButton"); describe("AuthProviderSelectionForm", function () { var provider1, provider2; beforeEach(function () { provider1 = { id: "Provider 1", plugin: BasicAuthPlugin_1.default, method: { labels: { login: "login 1", password: "password 1" } } }; provider2 = { id: "Provider 2", plugin: BasicAuthPlugin_1.default, method: { labels: { login: "login 2", password: "password 2" } } }; }); describe("with one provider", function () { var wrapper; var hide; var saveCredentials; var cancel; beforeEach(function () { hide = (0, sinon_1.stub)(); saveCredentials = (0, sinon_1.stub)(); cancel = (0, sinon_1.stub)(); wrapper = (0, enzyme_1.shallow)(React.createElement(AuthProviderSelectionForm_1.default, { hide: hide, saveCredentials: saveCredentials, cancel: cancel, title: "Intergalactic Spy Network", error: "you forgot the secret password! what kind of spy arre you?", providers: [provider1] })); }); describe("rendering", function () { it("shows title", function () { var title = wrapper.find("h3"); (0, chai_1.expect)(title.text()).to.equal("Intergalactic Spy Network Login"); }); it("shows auth form for the provider", function () { var form = wrapper.find(BasicAuthForm_1.default); (0, chai_1.expect)(form.length).to.equal(1); (0, chai_1.expect)(form.props().provider).to.deep.equal(provider1); (0, chai_1.expect)(form.props().hide).to.equal(hide); (0, chai_1.expect)(form.props().cancel).to.equal(cancel); (0, chai_1.expect)(form.props().saveCredentials).to.equal(saveCredentials); (0, chai_1.expect)(form.props().error).to.equal("you forgot the secret password! what kind of spy arre you?"); }); it("does not show provider selection button", function () { var button = wrapper.find(BasicAuthButton_1.default); (0, chai_1.expect)(button.length).to.equal(0); }); it("does not show cancel button", function () { var button = wrapper.find("button"); (0, chai_1.expect)(button.length).to.equal(0); }); }); }); describe("with two providers", function () { var wrapper; var hide; var saveCredentials; var cancel; beforeEach(function () { hide = (0, sinon_1.stub)(); saveCredentials = (0, sinon_1.stub)(); cancel = (0, sinon_1.stub)(); wrapper = (0, enzyme_1.mount)(React.createElement(AuthProviderSelectionForm_1.default, { hide: hide, saveCredentials: saveCredentials, cancel: cancel, title: "Intergalactic Spy Network", error: "you forgot the secret password! what kind of spy arre you?", providers: [provider1, provider2] })); }); describe("rendering", function () { it("shows title", function () { var title = wrapper.find("h3"); (0, chai_1.expect)(title.text()).to.equal("Intergalactic Spy Network Login"); }); it("shows auth buttons for both providers", function () { var buttons = wrapper.find(BasicAuthButton_1.default); (0, chai_1.expect)(buttons.length).to.equal(2); (0, chai_1.expect)(buttons.at(0).props().provider).to.deep.equal(provider1); (0, chai_1.expect)(buttons.at(1).props().provider).to.deep.equal(provider2); }); it("shows cancel button", function () { var button = wrapper.find("button"); (0, chai_1.expect)(button.length).to.equal(1); }); }); describe("behavior", function () { it("selects a provider", function () { (0, chai_1.expect)(wrapper.state().selectedProvider).to.be.null; var buttons = wrapper.find(BasicAuthButton_1.default); buttons.at(1).simulate("click"); (0, chai_1.expect)(wrapper.state().selectedProvider).to.equal(provider2); }); it("shows auth form for selected provider", function () { wrapper.setState({ selectedProvider: provider1 }); wrapper.update(); var form = wrapper.find(BasicAuthForm_1.default); (0, chai_1.expect)(form.length).to.equal(1); (0, chai_1.expect)(form.props().provider).to.deep.equal(provider1); (0, chai_1.expect)(form.props().hide).to.equal(hide); (0, chai_1.expect)(form.props().cancel).to.equal(cancel); (0, chai_1.expect)(form.props().saveCredentials).to.equal(saveCredentials); (0, chai_1.expect)(form.props().error).to.equal("you forgot the secret password! what kind of spy arre you?"); }); it("selects previously attempted provider if there was an error", function () { wrapper = (0, enzyme_1.mount)(React.createElement(AuthProviderSelectionForm_1.default, { hide: hide, saveCredentials: saveCredentials, cancel: cancel, title: "Intergalactic Spy Network", error: "you forgot the secret password! what kind of spy arre you?", attemptedProvider: "Provider 2", providers: [provider1, provider2] })); (0, chai_1.expect)(wrapper.state().selectedProvider).to.equal(provider2); }); }); }); });