123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import React from "react"
- import { render } from "enzyme"
- import { Link } from "components/layout-utils"
- describe("<Link/> Anchor Target Safety", function () {
- const dummyComponent = () => null
- const components = {
- Link
- }
- const baseProps = {
- getComponent: c => components[c] || dummyComponent
- }
- it("renders regular links with `noreferrer` and `noopener`", function () {
- const props = {
- ...baseProps,
- href: "http://google.com/"
- }
- let wrapper = render(<Link {...props} />)
- const anchor = wrapper.find("a")
- expect(anchor.attr("href")).toEqual("http://google.com/")
- expect(anchor.attr("rel") || "").toMatch("noopener")
- expect(anchor.attr("rel") || "").toMatch("noreferrer")
- })
- it("enforces `noreferrer` and `noopener` on target=_blank links", function () {
- const props = {
- ...baseProps,
- href: "http://google.com/",
- target: "_blank"
- }
- let wrapper = render(<Link {...props} />)
- const anchor = wrapper.find("a")
- expect(anchor.attr("href")).toEqual("http://google.com/")
- expect(anchor.attr("target")).toEqual("_blank")
- expect(anchor.attr("rel") || "").toMatch("noopener")
- expect(anchor.attr("rel") || "").toMatch("noreferrer")
- })
- })
|