Skip to content

Commit 6743923

Browse files
Jake ChampionJakeChampion
authored andcommitted
add test for overriding the content length of requests
1 parent 9c750e5 commit 6743923

File tree

3 files changed

+301
-0
lines changed

3 files changed

+301
-0
lines changed

integration-tests/js-compute/fixtures/app/src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import "./kv-store.js"
2727
import "./logger.js"
2828
import "./missing-backend.js"
2929
import "./multiple-set-cookie.js"
30+
import "./override-content-length.js"
3031
import "./performance.js"
3132
import "./random.js"
3233
import "./react-byob.js"
Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
/// <reference path="../../../../../types/index.d.ts" />
2+
/* eslint-env serviceworker */
3+
4+
import { pass, assert, assertRejects } from "./assertions.js";
5+
import { routes, isRunningLocally } from "./routes.js";
6+
7+
let error;
8+
9+
async function requestInitObjectLiteral(overrideContentLength) {
10+
let response = await fetch(new Request('https://httpbin.org/headers', {
11+
backend: 'httpbin',
12+
overrideContentLength,
13+
headers: {
14+
"Content-Length": "1"
15+
}
16+
}));
17+
let body = await response.json()
18+
return body?.headers?.["Content-Length"];
19+
}
20+
21+
async function requestInitRequestInstance(overrideContentLength) {
22+
let request = new Request('https://httpbin.org/headers', {
23+
backend: 'httpbin',
24+
overrideContentLength,
25+
headers: {
26+
"Content-Length": "1"
27+
}
28+
});
29+
let response = await fetch(new Request('https://httpbin.org/headers', request));
30+
let body = await response.json()
31+
return body?.headers?.["Content-Length"];
32+
}
33+
34+
async function requestClone(overrideContentLength) {
35+
let request = new Request('https://httpbin.org/headers', {
36+
backend: 'httpbin',
37+
overrideContentLength,
38+
headers: {
39+
"Content-Length": "1"
40+
}
41+
});
42+
let response = await fetch(request.clone());
43+
let body = await response.json()
44+
return body?.headers?.["Content-Length"];
45+
}
46+
47+
async function fetchInitObjectLiteral(overrideContentLength) {
48+
let response = await fetch('https://httpbin.org/headers', {
49+
backend: 'httpbin',
50+
overrideContentLength,
51+
headers: {
52+
"Content-Length": "1"
53+
}
54+
});
55+
let body = await response.json()
56+
return body?.headers?.["Content-Length"];
57+
}
58+
59+
async function fetchInitRequestInstance(overrideContentLength) {
60+
let request = new Request('https://httpbin.org/headers', {
61+
backend: 'httpbin',
62+
overrideContentLength,
63+
headers: {
64+
"Content-Length": "1"
65+
}
66+
});
67+
let response = await fetch('https://httpbin.org/headers', request);
68+
let body = await response.json()
69+
return body?.headers?.["Content-Length"];
70+
}
71+
72+
routes.set("/override-content-length/request/init/object-literal/true", async () => {
73+
if (isRunningLocally()) {
74+
error = await assertRejects(() => requestInitObjectLiteral(true))
75+
if (error) { return error }
76+
} else {
77+
let actual = await requestInitObjectLiteral(true);
78+
let expected = "1"
79+
error = assert(actual, expected, `await requestInitObjectLiteral(true)`)
80+
if (error) { return error }
81+
}
82+
83+
return pass('ok')
84+
});
85+
86+
routes.set("/override-content-length/request/init/object-literal/false", async () => {
87+
let actual = await requestInitObjectLiteral(false);
88+
let expected = "0"
89+
error = assert(actual, expected, `await requestInitObjectLiteral(false)`)
90+
if (error) { return error }
91+
92+
return pass('ok')
93+
});
94+
95+
routes.set("/override-content-length/request/init/request-instance/true", async () => {
96+
if (isRunningLocally()) {
97+
error = await assertRejects(() => requestInitRequestInstance(true))
98+
if (error) { return error }
99+
} else {
100+
let actual = await requestInitRequestInstance(true);
101+
let expected = "1"
102+
error = assert(actual, expected, `await requestInitRequestInstance(true)`)
103+
if (error) { return error }
104+
}
105+
106+
return pass('ok')
107+
});
108+
109+
routes.set("/override-content-length/request/init/request-instance/false", async () => {
110+
let actual = await requestInitRequestInstance(false);
111+
let expected = "0"
112+
error = assert(actual, expected, `await requestInitRequestInstance(false)`)
113+
if (error) { return error }
114+
115+
return pass('ok')
116+
});
117+
118+
routes.set("/override-content-length/request/clone/true", async () => {
119+
if (isRunningLocally()) {
120+
error = await assertRejects(() => requestClone(true))
121+
if (error) { return error }
122+
} else {
123+
let actual = await requestClone(true);
124+
let expected = "1"
125+
error = assert(actual, expected, `await requestClone(true)`)
126+
if (error) { return error }
127+
}
128+
129+
return pass('ok')
130+
});
131+
132+
routes.set("/override-content-length/request/clone/false", async () => {
133+
let actual = await requestClone(false);
134+
let expected = "0"
135+
error = assert(actual, expected, `await requestClone(false)`)
136+
if (error) { return error }
137+
138+
return pass('ok')
139+
});
140+
141+
routes.set("/override-content-length/fetch/init/object-literal/true", async () => {
142+
if (isRunningLocally()) {
143+
error = await assertRejects(() => fetchInitObjectLiteral(true))
144+
if (error) { return error }
145+
} else {
146+
let actual = await fetchInitObjectLiteral(true);
147+
let expected = "1"
148+
error = assert(actual, expected, `await fetchInitObjectLiteral(true)`)
149+
if (error) { return error }
150+
}
151+
152+
return pass('ok')
153+
});
154+
155+
routes.set("/override-content-length/fetch/init/object-literal/false", async () => {
156+
let actual = await fetchInitObjectLiteral(false);
157+
let expected = "0"
158+
error = assert(actual, expected, `await fetchInitObjectLiteral(false)`)
159+
if (error) { return error }
160+
161+
return pass('ok')
162+
});
163+
164+
routes.set("/override-content-length/fetch/init/request-instance/true", async () => {
165+
if (isRunningLocally()) {
166+
error = await assertRejects(() => fetchInitRequestInstance(true))
167+
if (error) { return error }
168+
} else {
169+
let actual = await fetchInitRequestInstance(true);
170+
let expected = "1"
171+
error = assert(actual, expected, `await fetchInitRequestInstance(true)`)
172+
if (error) { return error }
173+
}
174+
175+
return pass('ok')
176+
});
177+
178+
routes.set("/override-content-length/fetch/init/request-instance/false", async () => {
179+
let actual = await fetchInitRequestInstance(false);
180+
let expected = "0"
181+
error = assert(actual, expected, `await fetchInitRequestInstance(false)`)
182+
if (error) { return error }
183+
184+
return pass('ok')
185+
});

integration-tests/js-compute/fixtures/app/tests.json

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4859,5 +4859,120 @@
48594859
"status": 200,
48604860
"body": "Error: TypeError"
48614861
}
4862+
},
4863+
4864+
"GET /override-content-length/request/init/object-literal/true": {
4865+
"environments": ["viceroy", "compute"],
4866+
"downstream_request": {
4867+
"method": "GET",
4868+
"pathname": "/override-content-length/request/init/object-literal/true"
4869+
},
4870+
"downstream_response": {
4871+
"status": 200,
4872+
"body": "ok"
4873+
}
4874+
},
4875+
"GET /override-content-length/request/init/object-literal/false": {
4876+
"environments": ["viceroy", "compute"],
4877+
"downstream_request": {
4878+
"method": "GET",
4879+
"pathname": "/override-content-length/request/init/object-literal/false"
4880+
},
4881+
"downstream_response": {
4882+
"status": 200,
4883+
"body": "ok"
4884+
}
4885+
},
4886+
4887+
"GET /override-content-length/request/init/request-instance/true": {
4888+
"environments": ["viceroy", "compute"],
4889+
"downstream_request": {
4890+
"method": "GET",
4891+
"pathname": "/override-content-length/request/init/request-instance/true"
4892+
},
4893+
"downstream_response": {
4894+
"status": 200,
4895+
"body": "ok"
4896+
}
4897+
},
4898+
"GET /override-content-length/request/init/request-instance/false": {
4899+
"environments": ["viceroy", "compute"],
4900+
"downstream_request": {
4901+
"method": "GET",
4902+
"pathname": "/override-content-length/request/init/request-instance/false"
4903+
},
4904+
"downstream_response": {
4905+
"status": 200,
4906+
"body": "ok"
4907+
}
4908+
},
4909+
4910+
"GET /override-content-length/request/clone/true": {
4911+
"environments": ["viceroy", "compute"],
4912+
"downstream_request": {
4913+
"method": "GET",
4914+
"pathname": "/override-content-length/request/clone/true"
4915+
},
4916+
"downstream_response": {
4917+
"status": 200,
4918+
"body": "ok"
4919+
}
4920+
},
4921+
"GET /override-content-length/request/clone/false": {
4922+
"environments": ["viceroy", "compute"],
4923+
"downstream_request": {
4924+
"method": "GET",
4925+
"pathname": "/override-content-length/request/clone/false"
4926+
},
4927+
"downstream_response": {
4928+
"status": 200,
4929+
"body": "ok"
4930+
}
4931+
},
4932+
4933+
"GET /override-content-length/fetch/init/object-literal/true": {
4934+
"environments": ["viceroy", "compute"],
4935+
"downstream_request": {
4936+
"method": "GET",
4937+
"pathname": "/override-content-length/fetch/init/object-literal/true"
4938+
},
4939+
"downstream_response": {
4940+
"status": 200,
4941+
"body": "ok"
4942+
}
4943+
},
4944+
"GET /override-content-length/fetch/init/object-literal/false": {
4945+
"environments": ["viceroy", "compute"],
4946+
"downstream_request": {
4947+
"method": "GET",
4948+
"pathname": "/override-content-length/fetch/init/object-literal/false"
4949+
},
4950+
"downstream_response": {
4951+
"status": 200,
4952+
"body": "ok"
4953+
}
4954+
},
4955+
4956+
"GET /override-content-length/fetch/init/request-instance/true": {
4957+
"environments": ["viceroy", "compute"],
4958+
"downstream_request": {
4959+
"method": "GET",
4960+
"pathname": "/override-content-length/fetch/init/request-instance/true"
4961+
},
4962+
"downstream_response": {
4963+
"status": 200,
4964+
"body": "ok"
4965+
}
4966+
},
4967+
"GET /override-content-length/fetch/init/request-instance/false": {
4968+
"environments": ["viceroy", "compute"],
4969+
"downstream_request": {
4970+
"method": "GET",
4971+
"pathname": "/override-content-length/fetch/init/request-instance/false"
4972+
},
4973+
"downstream_response": {
4974+
"status": 200,
4975+
"body": "ok"
4976+
}
48624977
}
48634978
}

0 commit comments

Comments
 (0)