diff --git a/test/integration/middleware-general/middleware.js b/test/integration/middleware-general/middleware.js
index 5e2c7f79bf5c0..ee6ed111e6ceb 100644
--- a/test/integration/middleware-general/middleware.js
+++ b/test/integration/middleware-general/middleware.js
@@ -141,6 +141,11 @@ export async function middleware(request) {
return NextResponse.next()
}
+ if (url.pathname === '/ssr-page') {
+ url.pathname = '/ssr-page-2'
+ return NextResponse.rewrite(url)
+ }
+
// Map metadata by default
return new Response(null, {
headers: {
diff --git a/test/integration/middleware-general/pages/ssr-page-2.js b/test/integration/middleware-general/pages/ssr-page-2.js
new file mode 100644
index 0000000000000..67e1b708687ea
--- /dev/null
+++ b/test/integration/middleware-general/pages/ssr-page-2.js
@@ -0,0 +1,11 @@
+export default function SSRPage(props) {
+ return
{props.message}
+}
+
+export const getServerSideProps = (req) => {
+ return {
+ props: {
+ message: 'Bye Cruel World',
+ },
+ }
+}
diff --git a/test/integration/middleware-general/pages/ssr-page.js b/test/integration/middleware-general/pages/ssr-page.js
new file mode 100644
index 0000000000000..e2aaaa56b46ef
--- /dev/null
+++ b/test/integration/middleware-general/pages/ssr-page.js
@@ -0,0 +1,11 @@
+export default function SSRPage(props) {
+ return {props.message}
+}
+
+export const getServerSideProps = (req) => {
+ return {
+ props: {
+ message: 'Hello World',
+ },
+ }
+}
diff --git a/test/integration/middleware-general/test/index.test.js b/test/integration/middleware-general/test/index.test.js
index ebfd1106feb98..0c5e41ef4bc71 100644
--- a/test/integration/middleware-general/test/index.test.js
+++ b/test/integration/middleware-general/test/index.test.js
@@ -29,6 +29,7 @@ describe('Middleware Runtime', () => {
beforeAll(async () => {
context.dev = true
context.appPort = await findPort()
+ context.buildId = 'development'
context.app = await launchApp(context.appDir, context.appPort, {
env: {
MIDDLEWARE_TEST: 'asdf',
@@ -83,6 +84,11 @@ describe('Middleware Runtime', () => {
stdout: true,
})
+ context.buildId = await fs.readFile(
+ join(context.appDir, '.next/BUILD_ID'),
+ 'utf8'
+ )
+
context.buildLogs = {
output: build.stdout + build.stderr,
stderr: build.stderr,
@@ -279,6 +285,18 @@ function tests(context, locale = '') {
)
expect(readMiddlewareError(response)).toContain(urlsError)
})
+
+ it('should trigger middleware for data requests', async () => {
+ const browser = await webdriver(context.appPort, `/ssr-page`)
+ const text = await browser.elementByCss('h1').text()
+ expect(text).toEqual('Bye Cruel World')
+ const res = await fetchViaHTTP(
+ context.appPort,
+ `/_next/data/${context.buildId}/en/ssr-page.json`
+ )
+ const json = await res.json()
+ expect(json.pageProps.message).toEqual('Bye Cruel World')
+ })
}
function readMiddlewareJSON(response) {