summaryrefslogtreecommitdiff
path: root/packages/integrations/vercel/test/edge-middleware.test.js
diff options
context:
space:
mode:
authorGravatar Emanuele Stoppa <my.burning@gmail.com> 2025-02-07 08:47:40 +0000
committerGravatar GitHub <noreply@github.com> 2025-02-07 08:47:40 +0000
commitefef4136e36b7b272f39ee9e1d173b44c212ec34 (patch)
tree8b87e07aff600b01dbba7f4cfaa8f8ddbfa557a6 /packages/integrations/vercel/test/edge-middleware.test.js
parent4e7d97fb09f8180572fca5d823ad8edcda7b50b4 (diff)
parent64b118ac9558287c2da76247d171ae3a88d390e4 (diff)
downloadastro-efef4136e36b7b272f39ee9e1d173b44c212ec34.tar.gz
astro-efef4136e36b7b272f39ee9e1d173b44c212ec34.tar.zst
astro-efef4136e36b7b272f39ee9e1d173b44c212ec34.zip
Merge pull request #13147 from withastro/move-vercel
chore: move Vercel adapter to core monorepo
Diffstat (limited to 'packages/integrations/vercel/test/edge-middleware.test.js')
-rw-r--r--packages/integrations/vercel/test/edge-middleware.test.js74
1 files changed, 74 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..50c282a37
--- /dev/null
+++ b/packages/integrations/vercel/test/edge-middleware.test.js
@@ -0,0 +1,74 @@
+import assert from 'node:assert/strict';
+import { before, describe, it } from 'node:test';
+import { loadFixture } from './test-utils.js';
+
+describe('Vercel edge middleware', () => {
+ /** @type {import('./test-utils.js').Fixture} */
+ let build;
+ before(async () => {
+ build = await loadFixture({
+ root: './fixtures/middleware-with-edge-file/',
+ });
+ await build.build();
+ });
+
+ it('an edge function is created', async () => {
+ const contents = await build.readFile(
+ '../.vercel/output/functions/_middleware.func/.vc-config.json'
+ );
+ const contentsJSON = JSON.parse(contents);
+ assert.equal(contentsJSON.runtime, 'edge');
+ assert.equal(contentsJSON.entrypoint, 'middleware.mjs');
+ });
+
+ it('deployment config points to the middleware edge function', async () => {
+ const contents = await build.readFile('../.vercel/output/config.json');
+ const { routes } = JSON.parse(contents);
+ assert.equal(
+ routes.some((route) => route.dest === '_middleware'),
+ true
+ );
+ });
+
+ it('edge sets Set-Cookie headers', async () => {
+ const entry = new URL(
+ '../.vercel/output/functions/_middleware.func/middleware.mjs',
+ build.config.outDir
+ );
+ const module = await import(entry);
+ const request = new Request('http://example.com/foo');
+ const response = await module.default(request, {});
+ assert.equal(response.headers.get('set-cookie'), 'foo=bar');
+ assert.ok((await response.text()).length, 'Body is included');
+ });
+
+ // TODO: The path here seems to be inconsistent?
+ it.skip('with edge handle file, should successfully build the middleware', async () => {
+ const fixture = await loadFixture({
+ root: './fixtures/middleware-with-edge-file/',
+ });
+ await fixture.build();
+ const contents = await fixture.readFile(
+ // this is abysmal...
+ '../.vercel/output/functions/render.func/www/withastro/astro/packages/vercel/test/fixtures/middleware-with-edge-file/dist/middleware.mjs'
+ );
+ // assert.equal(contents.includes('title:')).to.be.true;
+ // chaiJestSnapshot.setTestName('Middleware with handler file');
+ // assert.equal(contents).to.matchSnapshot(true);
+ });
+
+ // TODO: The path here seems to be inconsistent?
+ it.skip('without edge handle file, should successfully build the middleware', async () => {
+ const fixture = await loadFixture({
+ root: './fixtures/middleware-without-edge-file/',
+ });
+ await fixture.build();
+ const contents = await fixture.readFile(
+ // this is abysmal...
+ '../.vercel/output/functions/render.func/www/withastro/astro/packages/vercel/test/fixtures/middleware-without-edge-file/dist/middleware.mjs'
+ );
+ // assert.equal(contents.includes('title:')).to.be.false;
+ // chaiJestSnapshot.setTestName('Middleware without handler file');
+ // assert.equal(contents).to.matchSnapshot(true);
+ });
+});