diff --git a/frontend/__tests__/unit/HomeLoggedOut.snapshot.jsx b/frontend/__tests__/unit/HomeLoggedOut.snapshot.jsx new file mode 100644 index 0000000..04460a6 --- /dev/null +++ b/frontend/__tests__/unit/HomeLoggedOut.snapshot.jsx @@ -0,0 +1,7 @@ +import { render } from "@testing-library/react"; +import HomeLoggedOut from "../../src/components/HomeLoggedOut"; + +it("renders HomeLoggedOut unchanged", () => { + const { container } = render(); + expect(container).toMatchSnapshot(); +}); diff --git a/frontend/__tests__/unit/HomeLoggedOut.test.jsx b/frontend/__tests__/unit/HomeLoggedOut.test.jsx new file mode 100644 index 0000000..aa27069 --- /dev/null +++ b/frontend/__tests__/unit/HomeLoggedOut.test.jsx @@ -0,0 +1,59 @@ +import { render, screen } from "@testing-library/react"; +import HomeLoggedOut from "../../src/components/HomeLoggedOut"; +import { Router } from "react-router-dom"; +import { createMemoryHistory } from "history"; +import { act } from "react-dom/test-utils"; + +var axios = require("axios"); +var MockAdapter = require("axios-mock-adapter"); +var mock = new MockAdapter(axios); + +describe("HomeLoggedOut", () => { + test("renders HomeLoggedOut when authentication is enabled", () => { + const history = createMemoryHistory(); + const goSpy = jest.spyOn(history, "go"); + + mock.onGet("/auth/login").reply(200, { enabled: true }); + + render( + + + + ); + + const projectDescription = screen.getByRole("heading", { + name: "ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller.", + }); + + const loginMessage = screen.getByText(/Please Log In to continue/i); + + expect(projectDescription).toBeInTheDocument(); + expect(loginMessage).toBeInTheDocument(); + expect(goSpy).not.toHaveBeenCalled(); + }); + + test("renders HomeLoggedOut when authentication is disabled", async () => { + const history = createMemoryHistory(); + const goSpy = jest.spyOn(history, "go"); + + mock.onGet("/auth/login").reply(200, { enabled: false }); + + await act(async () => { + render( + + + + ); + }); + + const projectDescription = screen.getByRole("heading", { + name: "ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller.", + }); + + const loginMessage = screen.getByText(/Please Log In to continue/i); + + expect(projectDescription).toBeInTheDocument(); + expect(loginMessage).toBeInTheDocument(); + expect(goSpy).toHaveBeenCalled(); + }); +}); diff --git a/frontend/__tests__/unit/__snapshots__/HomeLoggedOut.snapshot.jsx.snap b/frontend/__tests__/unit/__snapshots__/HomeLoggedOut.snapshot.jsx.snap new file mode 100644 index 0000000..8afbec2 --- /dev/null +++ b/frontend/__tests__/unit/__snapshots__/HomeLoggedOut.snapshot.jsx.snap @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders HomeLoggedOut unchanged 1`] = ` +
+
+
+
+ + ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller. + +
+

+ + Please Log In to continue + +

+
+
+
+`;