From 7ede1811376e4c08b9aba79c84b90ca2942ee87e Mon Sep 17 00:00:00 2001 From: Carmen Popoviciu Date: Thu, 26 Sep 2024 14:17:53 +0200 Subject: [PATCH] fix(wrangler): Validate routes on config file changes (#6819) * fix(wrangler): Validate routes on config file changes * add tests * update tests to reflect new html_handling behaviour --------- Co-authored-by: emily-shen <69125074+emily-shen@users.noreply.github.com> --- .changeset/friendly-papayas-provide.md | 5 ++++ packages/wrangler/e2e/dev.test.ts | 39 ++++++++++++++++++-------- packages/wrangler/src/dev.tsx | 3 ++ 3 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 .changeset/friendly-papayas-provide.md diff --git a/.changeset/friendly-papayas-provide.md b/.changeset/friendly-papayas-provide.md new file mode 100644 index 000000000000..1d3f286f3ded --- /dev/null +++ b/.changeset/friendly-papayas-provide.md @@ -0,0 +1,5 @@ +--- +"wrangler": patch +--- + +fix: Validate `[routes]` on configuration file changes diff --git a/packages/wrangler/e2e/dev.test.ts b/packages/wrangler/e2e/dev.test.ts index d4a76d66349c..1fac8f645612 100644 --- a/packages/wrangler/e2e/dev.test.ts +++ b/packages/wrangler/e2e/dev.test.ts @@ -936,7 +936,7 @@ describe("watch mode", () => { describe.each([{ cmd: "wrangler dev" }, { cmd: "wrangler dev --x-dev-env" }])( "Workers + Assets watch mode: $cmd", ({ cmd }) => { - it(`supports modifying existing assets during dev session`, async () => { + it(`supports modifying existing assets during dev session and errors when invalid routes are added`, async () => { const helper = new WranglerE2ETestHelper(); await helper.seed({ "wrangler.toml": dedent` @@ -977,6 +977,19 @@ describe("watch mode", () => { ); // expect a new eTag back because the content for this path has changed expect(response.headers.get("etag")).not.toBe(originalETag); + + // changes to routes should error while in watch mode + await helper.seed({ + "wrangler.toml": dedent` + name = "${workerName}" + compatibility_date = "2023-01-01" + route = "example.com/path/*" + + [assets] + directory = "./public" + `, + }); + await worker.readUntil(/UserError: Invalid Routes:/); }); it(`supports adding new assets during dev session`, async () => { @@ -1158,11 +1171,7 @@ describe("watch mode", () => { const worker = helper.runLongLived(cmd); const { url } = await worker.waitForReady(); - let response = await fetch(url); - expect(response.status).toBe(200); - expect(await response.text()).toBe("Hello from user Worker!"); - - response = await fetch(`${url}/hey`); + let response = await fetch(`${url}/hey`); expect(response.status).toBe(200); expect(await response.text()).toBe("Hello from user Worker!"); @@ -1226,11 +1235,7 @@ describe("watch mode", () => { const worker = helper.runLongLived(cmd); const { url } = await worker.waitForReady(); - let response = await fetch(url); - expect(response.status).toBe(200); - expect(await response.text()).toBe("Hello from user Worker!"); - - response = await fetch(`${url}/hey`); + let response = await fetch(`${url}/hey`); expect(response.status).toBe(200); expect(await response.text()).toBe("Hello from user Worker!"); @@ -1395,7 +1400,7 @@ describe("watch mode", () => { { cmd: "wrangler dev --assets=dist" }, { cmd: "wrangler dev --x-dev-env --assets=dist" }, ])("Workers + Assets watch mode: $cmd", ({ cmd }) => { - it(`supports modifying assets during dev session`, async () => { + it(`supports modifying assets during dev session and errors when invalid routes are added`, async () => { const helper = new WranglerE2ETestHelper(); await helper.seed({ "wrangler.toml": dedent` @@ -1476,6 +1481,16 @@ describe("watch mode", () => { } )); expect(response.status).toBe(404); + + // changes to routes should error while in watch mode + await helper.seed({ + "wrangler.toml": dedent` + name = "${workerName}" + compatibility_date = "2023-01-01" + route = "example.com/path/*" + `, + }); + await worker.readUntil(/UserError: Invalid Routes:/); }); it(`supports switching from assets-only Workers to Workers with assets during the current dev session`, async () => { diff --git a/packages/wrangler/src/dev.tsx b/packages/wrangler/src/dev.tsx index 072b80ff4147..5f81f8c4b701 100644 --- a/packages/wrangler/src/dev.tsx +++ b/packages/wrangler/src/dev.tsx @@ -836,6 +836,9 @@ export async function startDev(args: StartDevOptions) { "dev" ); + // ensure we re-validate routes + await getHostAndRoutes(args, config); + assetsOptions = processAssetsArg(args, config); /*