import { expect } from "chai"; import * as React from "react"; import { shallow } from "enzyme"; import OAuthButton, { OAuthMethod } from "../OAuthButton"; describe("OAuthButton", () => { let wrapper; let provider; beforeEach(() => { let method = { type: "method", description: "description", links: [{ "rel": "authenticate", "href": "auth" }, { "rel": "logo", "href": "logo.png" } ] }; provider = { method }; wrapper = shallow( ); }); it("shows button with image", () => { let button = wrapper.find("a"); expect(button.length).to.equal(1); expect(button.props()["aria-label"]).to.equal("Log in with description"); let image = button.find("img"); expect(image.length).to.equal(1); expect(image.props().src).to.equal("logo.png"); expect(image.props().alt).to.equal("Log in with description"); }); it("links to authenticate with redirect", () => { let button = wrapper.find("a"); expect(button.props().href).to.contain("auth&redirect_uri="); }); it("doesn't show button if auth document is missing link", () => { let method: OAuthMethod = { type: "method" }; provider = { method }; wrapper = shallow( ); let button = wrapper.find("a"); expect(button.length).to.equal(0); method = { type: "method", links: [] }; provider = { method }; wrapper = shallow( ); button = wrapper.find("a"); expect(button.length).to.equal(0); }); it("doesn't show image if auth document is missing link", () => { let method: OAuthMethod = { type: "method", links: [{ "rel": "authenticate", "href": "auth" }] }; provider = { method }; wrapper = shallow( ); let button = wrapper.find("a"); let image = button.find("img"); expect(image.length).to.equal(0); }); });