Skip to content

Commit 37d8b7d

Browse files
authored
chore(remix-node): bump @remix-run/web-fetch to latest (#6120)
Signed-off-by: Logan McAnsh <logan@mcan.sh>
1 parent e4713ea commit 37d8b7d

File tree

8 files changed

+130
-479
lines changed

8 files changed

+130
-479
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ jobs:
2222
if: github.repository == 'remix-run/remix'
2323
uses: ./.github/workflows/reusable-test.yml
2424
with:
25-
node_version: '["19"]'
25+
node_version: '["latest"]'

integration/error-data-request-test.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,17 +129,13 @@ test.describe("ErrorBoundary", () => {
129129
});
130130

131131
test("returns a 405 x-remix-error on a data fetch with a bad method", async () => {
132-
let response = await fixture.requestData(
133-
`/loader-return-json`,
134-
"routes/loader-return-json",
135-
{
132+
expect(() =>
133+
fixture.requestData("/loader-return-json", "routes/loader-return-json", {
136134
method: "TRACE",
137-
}
135+
})
136+
).rejects.toThrowError(
137+
`Failed to construct 'Request': 'TRACE' HTTP method is unsupported.`
138138
);
139-
expect(response.status).toBe(405);
140-
expect(response.headers.get("X-Remix-Error")).toBe("yes");
141-
expect(await response.text()).toMatch("Unexpected Server Error");
142-
assertConsoleError('Error: Invalid request method "TRACE"');
143139
});
144140

145141
test("returns a 403 x-remix-error on a data fetch GET to a bad path", async () => {

packages/remix-architect/__tests__/server-test.ts

Lines changed: 27 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ import path from "path";
33
import lambdaTester from "lambda-tester";
44
import type { APIGatewayProxyEventV2 } from "aws-lambda";
55
import {
6-
// This has been added as a global in node 15+, but we expose it here while we
7-
// support Node 14
8-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
9-
AbortController,
106
createRequestHandler as createRemixRequestHandler,
117
Response as NodeResponse,
128
} from "@remix-run/node";
@@ -204,145 +200,50 @@ describe("architect createRequestHandler", () => {
204200
describe("architect createRemixHeaders", () => {
205201
describe("creates fetch headers from architect headers", () => {
206202
it("handles empty headers", () => {
207-
expect(createRemixHeaders({}, undefined)).toMatchInlineSnapshot(`
208-
Headers {
209-
Symbol(query): Array [],
210-
Symbol(context): null,
211-
}
212-
`);
203+
let headers = createRemixHeaders({});
204+
expect(headers.raw()).toMatchInlineSnapshot(`Object {}`);
213205
});
214206

215207
it("handles simple headers", () => {
216-
expect(createRemixHeaders({ "x-foo": "bar" }, undefined))
217-
.toMatchInlineSnapshot(`
218-
Headers {
219-
Symbol(query): Array [
220-
"x-foo",
221-
"bar",
222-
],
223-
Symbol(context): null,
224-
}
225-
`);
208+
let headers = createRemixHeaders({ "x-foo": "bar" });
209+
expect(headers.get("x-foo")).toBe("bar");
226210
});
227211

228212
it("handles multiple headers", () => {
229-
expect(createRemixHeaders({ "x-foo": "bar", "x-bar": "baz" }, undefined))
230-
.toMatchInlineSnapshot(`
231-
Headers {
232-
Symbol(query): Array [
233-
"x-foo",
234-
"bar",
235-
"x-bar",
236-
"baz",
237-
],
238-
Symbol(context): null,
239-
}
240-
`);
213+
let headers = createRemixHeaders({ "x-foo": "bar", "x-bar": "baz" });
214+
expect(headers.get("x-foo")).toBe("bar");
215+
expect(headers.get("x-bar")).toBe("baz");
241216
});
242217

243218
it("handles headers with multiple values", () => {
244-
expect(createRemixHeaders({ "x-foo": "bar, baz" }, undefined))
245-
.toMatchInlineSnapshot(`
246-
Headers {
247-
Symbol(query): Array [
248-
"x-foo",
249-
"bar, baz",
250-
],
251-
Symbol(context): null,
252-
}
253-
`);
254-
});
255-
256-
it("handles headers with multiple values and multiple headers", () => {
257-
expect(
258-
createRemixHeaders({ "x-foo": "bar, baz", "x-bar": "baz" }, undefined)
259-
).toMatchInlineSnapshot(`
260-
Headers {
261-
Symbol(query): Array [
262-
"x-foo",
263-
"bar, baz",
264-
"x-bar",
265-
"baz",
266-
],
267-
Symbol(context): null,
268-
}
269-
`);
219+
let headers = createRemixHeaders({
220+
"x-foo": "bar, baz",
221+
"x-bar": "baz",
222+
});
223+
expect(headers.getAll("x-foo")).toEqual(["bar, baz"]);
224+
expect(headers.get("x-bar")).toBe("baz");
270225
});
271226

272-
it("handles cookies", () => {
273-
expect(
274-
createRemixHeaders({ "x-something-else": "true" }, [
275-
"__session=some_value",
276-
"__other=some_other_value",
277-
])
278-
).toMatchInlineSnapshot(`
279-
Headers {
280-
Symbol(query): Array [
281-
"x-something-else",
282-
"true",
283-
"cookie",
284-
"__session=some_value; __other=some_other_value",
285-
],
286-
Symbol(context): null,
287-
}
288-
`);
227+
it("handles multiple request cookies", () => {
228+
let headers = createRemixHeaders({}, [
229+
"__session=some_value",
230+
"__other=some_other_value",
231+
]);
232+
expect(headers.getAll("cookie")).toEqual([
233+
"__session=some_value; __other=some_other_value",
234+
]);
289235
});
290236
});
291237
});
292238

293239
describe("architect createRemixRequest", () => {
294240
it("creates a request with the correct headers", () => {
295-
expect(
296-
createRemixRequest(
297-
createMockEvent({
298-
cookies: ["__session=value"],
299-
})
300-
)
301-
).toMatchInlineSnapshot(`
302-
NodeRequest {
303-
"agent": undefined,
304-
"compress": true,
305-
"counter": 0,
306-
"follow": 20,
307-
"highWaterMark": 16384,
308-
"insecureHTTPParser": false,
309-
"size": 0,
310-
Symbol(Body internals): Object {
311-
"body": null,
312-
"boundary": null,
313-
"disturbed": false,
314-
"error": null,
315-
"size": 0,
316-
"type": null,
317-
},
318-
Symbol(Request internals): Object {
319-
"credentials": "same-origin",
320-
"headers": Headers {
321-
Symbol(query): Array [
322-
"accept",
323-
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
324-
"accept-encoding",
325-
"gzip, deflate",
326-
"accept-language",
327-
"en-US,en;q=0.9",
328-
"cookie",
329-
"__session=value",
330-
"host",
331-
"localhost:3333",
332-
"upgrade-insecure-requests",
333-
"1",
334-
"user-agent",
335-
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15",
336-
],
337-
Symbol(context): null,
338-
},
339-
"method": "GET",
340-
"parsedURL": "https://localhost:3333/",
341-
"redirect": "follow",
342-
"signal": AbortSignal {},
343-
},
344-
}
345-
`);
241+
let remixRequest = createRemixRequest(
242+
createMockEvent({ cookies: ["__session=value"] })
243+
);
244+
245+
expect(remixRequest.method).toBe("GET");
246+
expect(remixRequest.headers.get("cookie")).toBe("__session=value");
346247
});
347248
});
348249

packages/remix-express/__tests__/server-test.ts

Lines changed: 31 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ describe("express createRequestHandler", () => {
107107
});
108108

109109
let request = supertest(createApp());
110-
// note: vercel's createServerWithHelpers requires a x-now-bridge-request-id
111-
let res = await request.get("/").set({ "x-now-bridge-request-id": "2" });
112-
110+
let res = await request.get("/");
113111
expect(res.status).toBe(200);
114112
expect(res.text).toBe("hello world");
115113
});
@@ -159,88 +157,41 @@ describe("express createRequestHandler", () => {
159157
describe("express createRemixHeaders", () => {
160158
describe("creates fetch headers from express headers", () => {
161159
it("handles empty headers", () => {
162-
expect(createRemixHeaders({})).toMatchInlineSnapshot(`
163-
Headers {
164-
Symbol(query): Array [],
165-
Symbol(context): null,
166-
}
167-
`);
160+
let headers = createRemixHeaders({});
161+
expect(headers.raw()).toMatchInlineSnapshot(`Object {}`);
168162
});
169163

170164
it("handles simple headers", () => {
171-
expect(createRemixHeaders({ "x-foo": "bar" })).toMatchInlineSnapshot(`
172-
Headers {
173-
Symbol(query): Array [
174-
"x-foo",
175-
"bar",
176-
],
177-
Symbol(context): null,
178-
}
179-
`);
165+
let headers = createRemixHeaders({ "x-foo": "bar" });
166+
expect(headers.get("x-foo")).toBe("bar");
180167
});
181168

182169
it("handles multiple headers", () => {
183-
expect(createRemixHeaders({ "x-foo": "bar", "x-bar": "baz" }))
184-
.toMatchInlineSnapshot(`
185-
Headers {
186-
Symbol(query): Array [
187-
"x-foo",
188-
"bar",
189-
"x-bar",
190-
"baz",
191-
],
192-
Symbol(context): null,
193-
}
194-
`);
170+
let headers = createRemixHeaders({ "x-foo": "bar", "x-bar": "baz" });
171+
expect(headers.get("x-foo")).toBe("bar");
172+
expect(headers.get("x-bar")).toBe("baz");
195173
});
196174

197175
it("handles headers with multiple values", () => {
198-
expect(createRemixHeaders({ "x-foo": "bar, baz" }))
199-
.toMatchInlineSnapshot(`
200-
Headers {
201-
Symbol(query): Array [
202-
"x-foo",
203-
"bar, baz",
204-
],
205-
Symbol(context): null,
206-
}
207-
`);
208-
});
209-
210-
it("handles headers with multiple values and multiple headers", () => {
211-
expect(createRemixHeaders({ "x-foo": "bar, baz", "x-bar": "baz" }))
212-
.toMatchInlineSnapshot(`
213-
Headers {
214-
Symbol(query): Array [
215-
"x-foo",
216-
"bar, baz",
217-
"x-bar",
218-
"baz",
219-
],
220-
Symbol(context): null,
221-
}
222-
`);
176+
let headers = createRemixHeaders({
177+
"x-foo": ["bar", "baz"],
178+
"x-bar": "baz",
179+
});
180+
expect(headers.getAll("x-foo")).toEqual(["bar", "baz"]);
181+
expect(headers.get("x-bar")).toBe("baz");
223182
});
224183

225184
it("handles multiple set-cookie headers", () => {
226-
expect(
227-
createRemixHeaders({
228-
"set-cookie": [
229-
"__session=some_value; Path=/; Secure; HttpOnly; MaxAge=7200; SameSite=Lax",
230-
"__other=some_other_value; Path=/; Secure; HttpOnly; MaxAge=3600; SameSite=Lax",
231-
],
232-
})
233-
).toMatchInlineSnapshot(`
234-
Headers {
235-
Symbol(query): Array [
236-
"set-cookie",
237-
"__session=some_value; Path=/; Secure; HttpOnly; MaxAge=7200; SameSite=Lax",
238-
"set-cookie",
239-
"__other=some_other_value; Path=/; Secure; HttpOnly; MaxAge=3600; SameSite=Lax",
240-
],
241-
Symbol(context): null,
242-
}
243-
`);
185+
let headers = createRemixHeaders({
186+
"set-cookie": [
187+
"__session=some_value; Path=/; Secure; HttpOnly; MaxAge=7200; SameSite=Lax",
188+
"__other=some_other_value; Path=/; Secure; HttpOnly; Expires=Wed, 21 Oct 2015 07:28:00 GMT; SameSite=Lax",
189+
],
190+
});
191+
expect(headers.getAll("set-cookie")).toEqual([
192+
"__session=some_value; Path=/; Secure; HttpOnly; MaxAge=7200; SameSite=Lax",
193+
"__other=some_other_value; Path=/; Secure; HttpOnly; Expires=Wed, 21 Oct 2015 07:28:00 GMT; SameSite=Lax",
194+
]);
244195
});
245196
});
246197
});
@@ -259,41 +210,12 @@ describe("express createRemixRequest", () => {
259210
});
260211
let expressResponse = createResponse();
261212

262-
expect(createRemixRequest(expressRequest, expressResponse))
263-
.toMatchInlineSnapshot(`
264-
NodeRequest {
265-
"agent": undefined,
266-
"compress": true,
267-
"counter": 0,
268-
"follow": 20,
269-
"highWaterMark": 16384,
270-
"insecureHTTPParser": false,
271-
"size": 0,
272-
Symbol(Body internals): Object {
273-
"body": null,
274-
"boundary": null,
275-
"disturbed": false,
276-
"error": null,
277-
"size": 0,
278-
"type": null,
279-
},
280-
Symbol(Request internals): Object {
281-
"credentials": "same-origin",
282-
"headers": Headers {
283-
Symbol(query): Array [
284-
"cache-control",
285-
"max-age=300, s-maxage=3600",
286-
"host",
287-
"localhost:3000",
288-
],
289-
Symbol(context): null,
290-
},
291-
"method": "GET",
292-
"parsedURL": "http://localhost:3000/foo/bar",
293-
"redirect": "follow",
294-
"signal": AbortSignal {},
295-
},
296-
}
297-
`);
213+
let remixRequest = createRemixRequest(expressRequest, expressResponse);
214+
215+
expect(remixRequest.method).toBe("GET");
216+
expect(remixRequest.headers.get("cache-control")).toBe(
217+
"max-age=300, s-maxage=3600"
218+
);
219+
expect(remixRequest.headers.get("host")).toBe("localhost:3000");
298220
});
299221
});

0 commit comments

Comments
 (0)