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) {