fleet/frontend/pages/ManageControlsPage/SetupExperience/cards/RunScript/RunScript.tests.tsx
Scott Gress 471cc13e3d
Fix RunScript tests and update mock server domain (#35746)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #35730 

# Details

* Unskipped and updated the RunScript (setup experience scripts UI)
tests to check for loading spinner, wait for it to disappear, and then
check for relevant items for test.
* Updated the mock server URL so that if a handler is missing in a test,
it won't accidentally be served by a local Fleet server (unless someone
intentionally starts a server on `fleettest.test:9876`).

# Checklist for submitter

## Testing

- [X] Added/updated automated tests
- [X] QA'd all new/changed functionality manually
* Ran all tests locally without Fleet server running, verified they
passed.
* Removed one of the "get team" handlers from the RunScript tests,
verified that it now fails even with Fleet server running.
2025-11-14 09:08:37 -06:00

111 lines
3.9 KiB
TypeScript

import React from "react";
import { screen, waitFor } from "@testing-library/react";
import mockServer from "test/mock-server";
import { createCustomRenderer, createMockRouter } from "test/test-utils";
import {
createSetupExperienceScriptHandler,
errorNoSetupExperienceScriptHandler,
} from "test/handlers/setup-experience-handlers";
import { createGetConfigHandler } from "test/handlers/config-handlers";
import { createGetTeamHandler } from "test/handlers/team-handlers";
import { createMockMdmConfig } from "__mocks__/configMock";
import RunScript from "./RunScript";
describe("RunScript", () => {
it("should render the 'turn on automatic enrollment' message when MDM isn't configured", async () => {
mockServer.use(errorNoSetupExperienceScriptHandler);
mockServer.use(
createGetConfigHandler({
mdm: createMockMdmConfig({ enabled_and_configured: false }),
})
);
mockServer.use(createGetTeamHandler({}));
const render = createCustomRenderer({
withBackendMock: true,
});
render(<RunScript router={createMockRouter()} currentTeamId={1} />);
expect(screen.getByTestId("spinner")).toBeVisible();
expect(
screen.queryByText(/turn on automatic enrollment/)
).not.toBeInTheDocument();
await waitFor(async () => {
expect(screen.queryByTestId("spinner")).not.toBeInTheDocument();
});
expect(
screen.getByText(/turn on automatic enrollment/)
).toBeInTheDocument();
});
it("should render the 'turn on automatic enrollment' message when MDM is configured but not ABM", async () => {
mockServer.use(errorNoSetupExperienceScriptHandler);
mockServer.use(
createGetConfigHandler({
mdm: createMockMdmConfig({
enabled_and_configured: true,
apple_bm_enabled_and_configured: false,
}),
})
);
mockServer.use(createGetTeamHandler({}));
const render = createCustomRenderer({
withBackendMock: true,
});
render(<RunScript router={createMockRouter()} currentTeamId={1} />);
expect(screen.getByTestId("spinner")).toBeVisible();
expect(
screen.queryByText(/turn on automatic enrollment/)
).not.toBeInTheDocument();
await waitFor(async () => {
expect(screen.queryByTestId("spinner")).not.toBeInTheDocument();
});
expect(
screen.getByText(/turn on automatic enrollment/)
).toBeInTheDocument();
});
it("should render the script uploader when no script has been uploaded", async () => {
mockServer.use(errorNoSetupExperienceScriptHandler);
mockServer.use(createGetConfigHandler());
mockServer.use(createGetTeamHandler({}));
const render = createCustomRenderer({
withBackendMock: true,
});
render(<RunScript router={createMockRouter()} currentTeamId={1} />);
expect(screen.getByTestId("spinner")).toBeVisible();
expect(screen.queryByLabelText("Upload")).not.toBeInTheDocument();
await waitFor(async () => {
expect(screen.queryByTestId("spinner")).not.toBeInTheDocument();
});
expect(await screen.findByRole("button", { name: "Upload" })).toBeVisible();
});
it("should render the uploaded script uploader when a script has been uploaded", async () => {
mockServer.use(createSetupExperienceScriptHandler());
mockServer.use(createGetConfigHandler());
mockServer.use(createGetTeamHandler({}));
const render = createCustomRenderer({
withBackendMock: true,
});
render(<RunScript router={createMockRouter()} currentTeamId={1} />);
expect(screen.getByTestId("spinner")).toBeVisible();
expect(
screen.queryByText("Script will run during setup:")
).not.toBeInTheDocument();
await waitFor(async () => {
expect(screen.queryByTestId("spinner")).not.toBeInTheDocument();
});
expect(
await screen.findByText("Script will run during setup:")
).toBeVisible();
expect(await screen.findByText("Test Script.sh")).toBeVisible();
});
});