Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lilnasy committed Sep 24, 2023
1 parent 569cb87 commit 335f756
Show file tree
Hide file tree
Showing 20 changed files with 144 additions and 0 deletions.
57 changes: 57 additions & 0 deletions packages/astro/test/custom-404-implicit-rerouting.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { expect } from 'chai';
import { loadFixture } from './test-utils.js';

for (const caseNumber of [ 1, 2, 3, 4 ]) {
describe(`Custom 404 with implicit rerouting - Case #${caseNumber}`, () => {
/** @type Awaited<ReturnType<typeof loadFixture>> */
let fixture;
/** @type Awaited<ReturnType<typeof fixture['startDevServer']>> */
let devServer

before(async () => {
fixture = await loadFixture({
root: `./fixtures/custom-404-loop-case-${caseNumber}/`,
site: 'http://example.com'
});

devServer = await fixture.startDevServer();
});

// sanity check
it('dev server handles normal requests', async () => {
const resPromise = fixture.fetch('/');
const result = await withTimeout(resPromise, 1000);
expect(result).to.not.equal(timeout);
expect(result.status).to.equal(200);
});

it('dev server stays responsive', async () => {
const resPromise = fixture.fetch('/alvsibdlvjks');
const result = await withTimeout(resPromise, 1000);
expect(result).to.not.equal(timeout);
expect(result.status).to.equal(404);
});

after(async () => {
await devServer.stop();
});
});
}


/***** UTILITY FUNCTIONS *****/

const timeout = Symbol("timeout")

/** @template Res */
function withTimeout(
/** @type Promise<Res> */
responsePromise,
/** @type number */
timeLimit
) {
/** @type Promise<typeof timeout> */
const timeoutPromise = new Promise(resolve => setTimeout(() => resolve(timeout), timeLimit))

return Promise.race([ responsePromise, timeoutPromise ]);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "@test/custom-404-loop-case-1",
"version": "0.0.0",
"private": true,
"dependencies": {
"astro": "workspace:*"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
Astro.response.status = 404
---
<p>four oh four route</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>all good here... or is it?</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "@test/custom-404-loop-case-2",
"version": "0.0.0",
"private": true,
"dependencies": {
"astro": "workspace:*"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
return new Response(null, { status: 404 })
---
<p>four oh four route</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>all good here... or is it?</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "@test/custom-404-loop-case-3",
"version": "0.0.0",
"private": true,
"dependencies": {
"astro": "workspace:*"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export async function onRequest(ctx, next) {
if (ctx.url.pathname !== '/') {
const response = await next()
return new Response(response.body, { ...response, status: 404 })
}
return next();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>four oh four route</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>all good here... or is it?</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "@test/custom-404-loop-case-4",
"version": "0.0.0",
"private": true,
"dependencies": {
"astro": "workspace:*"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export function onRequest(ctx, next) {
if (ctx.url.pathname !== '/') {
return new Response(null, { status: 404 });
}
return next();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>four oh four route</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>all good here... or is it?</p>
24 changes: 24 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 335f756

Please sign in to comment.