Skip to content

Commit fbe09ae

Browse files
authored
add e2e for external rewrite in middleware in app-router (#793)
* add e2e for external rewrite in middleware in app-router * review
1 parent 79a9647 commit fbe09ae

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

examples/app-router/middleware.ts

+4
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ export function middleware(request: NextRequest) {
2424
},
2525
});
2626
}
27+
if (path === "/rewrite-external") {
28+
const u = new URL("https://opennext.js.org/share.png");
29+
return NextResponse.rewrite(u);
30+
}
2731
const requestHeaders = new Headers();
2832
// Setting the Request Headers, this should be available in RSC
2933
requestHeaders.set("request-header", "request-header");

packages/tests-e2e/tests/appRouter/middleware.rewrite.test.ts

+18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
import { expect, test } from "@playwright/test";
2+
import { validateMd5 } from "../utils";
3+
4+
/*
5+
* `curl -s https://opennext.js.org/share.png | md5sum`
6+
* This is the MD5 hash of the image. It is used to validate the image content.
7+
*/
8+
const OPENNEXT_PNG_MD5 = "405f45cc3397b09717a13ebd6f1e027b";
29

310
test("Middleware Rewrite", async ({ page }) => {
411
await page.goto("/");
@@ -14,3 +21,14 @@ test("Middleware Rewrite", async ({ page }) => {
1421
el = page.getByText("Rewritten Destination", { exact: true });
1522
await expect(el).toBeVisible();
1623
});
24+
25+
test("Middleware Rewrite External Image", async ({ page }) => {
26+
await page.goto("/rewrite-external");
27+
page.on("response", async (response) => {
28+
expect(response.status()).toBe(200);
29+
expect(response.headers()["content-type"]).toBe("image/png");
30+
expect(response.headers()["cache-control"]).toBe("max-age=600");
31+
const bodyBuffer = await response.body();
32+
expect(validateMd5(bodyBuffer, OPENNEXT_PNG_MD5)).toBe(true);
33+
});
34+
});

0 commit comments

Comments
 (0)