summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/integrations/node/test/encoded.test.js44
-rw-r--r--packages/integrations/node/test/fixtures/encoded/package.json9
-rw-r--r--packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md1
-rw-r--r--packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro1
-rw-r--r--packages/integrations/node/test/test-utils.js17
5 files changed, 71 insertions, 1 deletions
diff --git a/packages/integrations/node/test/encoded.test.js b/packages/integrations/node/test/encoded.test.js
new file mode 100644
index 000000000..162ebd6cc
--- /dev/null
+++ b/packages/integrations/node/test/encoded.test.js
@@ -0,0 +1,44 @@
+import nodejs from '../dist/index.js';
+import { loadFixture, createRequestAndResponse } from './test-utils.js';
+import { expect } from 'chai';
+
+describe('Encoded Pathname', () => {
+ /** @type {import('./test-utils').Fixture} */
+ let fixture;
+
+ before(async () => {
+ fixture = await loadFixture({
+ root: './fixtures/encoded/',
+ output: 'server',
+ adapter: nodejs({ mode: 'middleware' }),
+ });
+ await fixture.build();
+ });
+
+ it('Can get an Astro file', async () => {
+ const { handler } = await import('./fixtures/encoded/dist/server/entry.mjs');
+ let { req, res, text } = createRequestAndResponse({
+ url: '/什么',
+ });
+
+ handler(req, res);
+ req.send();
+
+ const html = await text();
+ expect(html).to.include('什么</h1>');
+ });
+
+ it('Can get a Markdown file', async () => {
+ const { handler } = await import('./fixtures/encoded/dist/server/entry.mjs');
+
+ let { req, res, text } = createRequestAndResponse({
+ url: '/blog/什么',
+ });
+
+ handler(req, res);
+ req.send();
+
+ const html = await text();
+ expect(html).to.include('什么</h1>');
+ });
+});
diff --git a/packages/integrations/node/test/fixtures/encoded/package.json b/packages/integrations/node/test/fixtures/encoded/package.json
new file mode 100644
index 000000000..350077973
--- /dev/null
+++ b/packages/integrations/node/test/fixtures/encoded/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@test/nodejs-encoded",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "astro": "workspace:*",
+ "@astrojs/node": "workspace:*"
+ }
+}
diff --git a/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md b/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md
new file mode 100644
index 000000000..2820cf17e
--- /dev/null
+++ b/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md
@@ -0,0 +1 @@
+# 什么
diff --git a/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro b/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro
new file mode 100644
index 000000000..c8473f594
--- /dev/null
+++ b/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro
@@ -0,0 +1 @@
+<h1>什么</h1>
diff --git a/packages/integrations/node/test/test-utils.js b/packages/integrations/node/test/test-utils.js
index d3d7c17be..13e32a5e8 100644
--- a/packages/integrations/node/test/test-utils.js
+++ b/packages/integrations/node/test/test-utils.js
@@ -28,7 +28,13 @@ export function createRequestAndResponse(reqOptions) {
let done = toPromise(res);
- return { req, res, done };
+ // Get the response as text
+ const text = async () => {
+ let chunks = await done;
+ return buffersToString(chunks);
+ };
+
+ return { req, res, done, text };
}
export function toPromise(res) {
@@ -48,3 +54,12 @@ export function toPromise(res) {
});
});
}
+
+export function buffersToString(buffers) {
+ let decoder = new TextDecoder();
+ let str = '';
+ for (const buffer of buffers) {
+ str += decoder.decode(buffer);
+ }
+ return str;
+}