aboutsummaryrefslogtreecommitdiff
path: root/packages/integrations/vercel/test/static-assets.test.js
diff options
context:
space:
mode:
authorGravatar Alexander Niebuhr <alexander@nbhr.io> 2024-08-29 07:37:24 +0200
committerGravatar Alexander Niebuhr <alexander@nbhr.io> 2024-08-29 07:46:34 +0200
commitc1f560dcd90a262a103b8644b1e2eb8da87f2e3a (patch)
treed8f984474569500beac2adc0c9ea0781bd3f5f47 /packages/integrations/vercel/test/static-assets.test.js
parent93a1db68cd9cf3bb2a4d9f7a8af13cbd881eb701 (diff)
parent9543bdca342bf68d6db705b11c8201d3374ccbe0 (diff)
downloadastro-c1f560dcd90a262a103b8644b1e2eb8da87f2e3a.tar.gz
astro-c1f560dcd90a262a103b8644b1e2eb8da87f2e3a.tar.zst
astro-c1f560dcd90a262a103b8644b1e2eb8da87f2e3a.zip
Merge branch 'vercel' into main
Diffstat (limited to 'packages/integrations/vercel/test/static-assets.test.js')
-rw-r--r--packages/integrations/vercel/test/static-assets.test.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/packages/integrations/vercel/test/static-assets.test.js b/packages/integrations/vercel/test/static-assets.test.js
new file mode 100644
index 000000000..37d3a0577
--- /dev/null
+++ b/packages/integrations/vercel/test/static-assets.test.js
@@ -0,0 +1,72 @@
+import assert from 'node:assert/strict';
+import { describe, it } from 'node:test';
+import { loadFixture } from './test-utils.js';
+
+describe('Static Assets', () => {
+ /** @type {import('../../../astro/test/test-utils.js').Fixture} */
+ let fixture;
+
+ const VALID_CACHE_CONTROL = 'public, max-age=31536000, immutable';
+
+ async function build({ adapter, assets, output }) {
+ fixture = await loadFixture({
+ root: './fixtures/static-assets/',
+ output,
+ adapter,
+ build: {
+ assets,
+ },
+ });
+ await fixture.build();
+ }
+
+ async function getConfig() {
+ const json = await fixture.readFile('../.vercel/output/config.json');
+ const config = JSON.parse(json);
+
+ return config;
+ }
+
+ async function getAssets() {
+ return fixture.config.build.assets;
+ }
+
+ async function checkValidCacheControl(assets) {
+ const config = await getConfig();
+ const theAssets = assets ?? (await getAssets());
+
+ const route = config.routes.find((r) => r.src === `^/${theAssets}/(.*)$`);
+ assert.equal(route.headers['cache-control'], VALID_CACHE_CONTROL);
+ assert.equal(route.continue, true);
+ }
+
+ describe('static adapter', () => {
+ it('has cache control', async () => {
+ const { default: vercel } = await import('@astrojs/vercel/static');
+ await build({ adapter: vercel() });
+ await checkValidCacheControl();
+ });
+
+ it('has cache control other assets', async () => {
+ const { default: vercel } = await import('@astrojs/vercel/static');
+ const assets = '_foo';
+ await build({ adapter: vercel(), assets });
+ await checkValidCacheControl(assets);
+ });
+ });
+
+ describe('serverless adapter', () => {
+ it('has cache control', async () => {
+ const { default: vercel } = await import('@astrojs/vercel/serverless');
+ await build({ output: 'server', adapter: vercel() });
+ await checkValidCacheControl();
+ });
+
+ it('has cache control other assets', async () => {
+ const { default: vercel } = await import('@astrojs/vercel/serverless');
+ const assets = '_foo';
+ await build({ output: 'server', adapter: vercel(), assets });
+ await checkValidCacheControl(assets);
+ });
+ });
+});