diff options
Diffstat (limited to 'packages/integrations/vercel/test')
7 files changed, 102 insertions, 0 deletions
diff --git a/packages/integrations/vercel/test/edge-middleware.test.js b/packages/integrations/vercel/test/edge-middleware.test.js new file mode 100644 index 000000000..dd4b25b67 --- /dev/null +++ b/packages/integrations/vercel/test/edge-middleware.test.js @@ -0,0 +1,30 @@ +import { loadFixture } from './test-utils.js'; +import { expect, use } from 'chai'; +import chaiJestSnapshot from 'chai-jest-snapshot'; + +use(chaiJestSnapshot); + +describe('Serverless prerender', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + beforeEach(function () { + chaiJestSnapshot.configureUsingMochaContext(this); + }); + + before(async () => { + chaiJestSnapshot.resetSnapshotRegistry(); + fixture = await loadFixture({ + root: './fixtures/middleware/', + }); + }); + + it('build successfully the middleware edge file', async () => { + await fixture.build(); + const contents = await fixture.readFile( + // this is abysmal... + '../.vercel/output/functions/render.func/packages/integrations/vercel/test/fixtures/middleware/dist/middleware.mjs' + ); + expect(contents).to.matchSnapshot(); + }); +}); diff --git a/packages/integrations/vercel/test/edge-middleware.test.js.snap b/packages/integrations/vercel/test/edge-middleware.test.js.snap new file mode 100644 index 000000000..fe82ccff9 --- /dev/null +++ b/packages/integrations/vercel/test/edge-middleware.test.js.snap @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Serverless prerender build successfully the middleware edge file 1`] = ` +"// test/fixtures/middleware/src/vercel-edge-middleware.js +function vercel_edge_middleware_default({ request, context }) { + return { + title: \\"Hello world\\" + }; +} + +// test/fixtures/middleware/dist/middleware2.mjs +var onRequest = async (context, next) => { + const response = await next(); + return response; +}; + +// <stdin> +import { createContext, trySerializeLocals } from \\"astro/middleware\\"; +async function middleware(request, context) { + const url = new URL(request.url); + const ctx = createContext({ + request, + params: {} + }); + ctx.locals = vercel_edge_middleware_default({ request, context }); + const next = async () => { + const response = await fetch(url, { + headers: { + \\"x-astro-locals\\": trySerializeLocals(ctx.locals) + } + }); + return response; + }; + return onRequest(ctx, next); +} +export { + middleware as default +}; +" +`; diff --git a/packages/integrations/vercel/test/fixtures/middleware/astro.config.mjs b/packages/integrations/vercel/test/fixtures/middleware/astro.config.mjs new file mode 100644 index 000000000..321a8bde3 --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/middleware/astro.config.mjs @@ -0,0 +1,10 @@ +import {defineConfig} from "astro/config"; +import vercel from "@astrojs/vercel/serverless"; + +export default defineConfig({ + adapter: vercel(), + build: { + excludeMiddleware: true + }, + output: 'server' +});
\ No newline at end of file diff --git a/packages/integrations/vercel/test/fixtures/middleware/package.json b/packages/integrations/vercel/test/fixtures/middleware/package.json new file mode 100644 index 000000000..9ba60852d --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/middleware/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/vercel-edge-middleware", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/vercel": "workspace:*", + "astro": "workspace:*" + } +} diff --git a/packages/integrations/vercel/test/fixtures/middleware/src/middleware.js b/packages/integrations/vercel/test/fixtures/middleware/src/middleware.js new file mode 100644 index 000000000..349a0aa79 --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/middleware/src/middleware.js @@ -0,0 +1,8 @@ +/** + * @type {import("astro").MiddlewareResponseHandler} + */ +export const onRequest = async (context, next) => { + const test = 'something'; + const response = await next(); + return response; +}; diff --git a/packages/integrations/vercel/test/fixtures/middleware/src/pages/index.astro b/packages/integrations/vercel/test/fixtures/middleware/src/pages/index.astro new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/middleware/src/pages/index.astro diff --git a/packages/integrations/vercel/test/fixtures/middleware/src/vercel-edge-middleware.js b/packages/integrations/vercel/test/fixtures/middleware/src/vercel-edge-middleware.js new file mode 100644 index 000000000..bf69edb3e --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/middleware/src/vercel-edge-middleware.js @@ -0,0 +1,5 @@ +export default function ({ request, context }) { + return { + title: 'Hello world', + }; +} |