import { render, screen } from "@testing-library/react"; import HomeLoggedOut from "components/HomeLoggedOut"; import { Router } from "react-router-dom"; import { createMemoryHistory } from "history"; import { act } from "react-dom/test-utils"; import axios from "axios"; import MockAdapter from "axios-mock-adapter"; describe("HomeLoggedOut", () => { it("renders HomeLoggedOut unchanged", () => { const { container } = render(); expect(container).toMatchSnapshot(); }); test("renders HomeLoggedOut when authentication is enabled", () => { let mock = new MockAdapter(axios); 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 () => { let mock = new MockAdapter(axios); 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(); }); });