Skip to content

Commit da3eba0

Browse files
Jake ChampionJakeChampion
authored andcommitted
add test using response returned from fetch handler
1 parent fa435ab commit da3eba0

File tree

2 files changed

+88
-33
lines changed

2 files changed

+88
-33
lines changed

integration-tests/js-compute/fixtures/app/src/override-content-length.js

Lines changed: 61 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
/// <reference path="../../../../../types/index.d.ts" />
22
/* eslint-env serviceworker */
33

4+
import { CacheOverride } from "fastly:cache-override";
45
import { pass, assert, assertRejects } from "./assertions.js";
56
import { routes, isRunningLocally } from "./routes.js";
67

78
let error;
89

910
async function requestInitObjectLiteral(overrideContentLength) {
10-
let request = new Request('https://http-me.glitch.me/anything', {
11-
backend: 'httpme',
12-
method: 'POST',
13-
body: 'meow',
11+
let request = new Request("https://http-me.glitch.me/anything", {
12+
backend: "httpme",
13+
method: "POST",
14+
body: "meow",
1415
overrideContentLength,
1516
headers: {
1617
"content-length": "1"
@@ -22,10 +23,10 @@ async function requestInitObjectLiteral(overrideContentLength) {
2223
}
2324

2425
async function requestClone(overrideContentLength) {
25-
let request = new Request('https://http-me.glitch.me/anything', {
26-
backend: 'httpme',
27-
method: 'POST',
28-
body: 'meow',
26+
let request = new Request("https://http-me.glitch.me/anything", {
27+
backend: "httpme",
28+
method: "POST",
29+
body: "meow",
2930
overrideContentLength,
3031
headers: {
3132
"content-length": "1"
@@ -37,10 +38,10 @@ async function requestClone(overrideContentLength) {
3738
}
3839

3940
async function fetchInitObjectLiteral(overrideContentLength) {
40-
let response = await fetch('https://http-me.glitch.me/anything', {
41-
backend: 'httpme',
42-
method: 'POST',
43-
body: 'meow',
41+
let response = await fetch("https://http-me.glitch.me/anything", {
42+
backend: "httpme",
43+
method: "POST",
44+
body: "meow",
4445
overrideContentLength,
4546
headers: {
4647
"content-length": "1"
@@ -61,7 +62,7 @@ routes.set("/override-content-length/request/init/object-literal/true", async ()
6162
if (error) { return error }
6263
}
6364

64-
return pass('ok')
65+
return pass("ok")
6566
});
6667

6768
routes.set("/override-content-length/request/init/object-literal/false", async () => {
@@ -70,7 +71,7 @@ routes.set("/override-content-length/request/init/object-literal/false", async (
7071
error = assert(actual, expected, `await requestInitObjectLiteral(false)`)
7172
if (error) { return error }
7273

73-
return pass('ok')
74+
return pass("ok")
7475
});
7576

7677
routes.set("/override-content-length/request/clone/true", async () => {
@@ -84,7 +85,7 @@ routes.set("/override-content-length/request/clone/true", async () => {
8485
if (error) { return error }
8586
}
8687

87-
return pass('ok')
88+
return pass("ok")
8889
});
8990

9091
routes.set("/override-content-length/request/clone/false", async () => {
@@ -93,7 +94,7 @@ routes.set("/override-content-length/request/clone/false", async () => {
9394
error = assert(actual, expected, `await requestClone(false)`)
9495
if (error) { return error }
9596

96-
return pass('ok')
97+
return pass("ok")
9798
});
9899

99100
routes.set("/override-content-length/fetch/init/object-literal/true", async () => {
@@ -107,7 +108,7 @@ routes.set("/override-content-length/fetch/init/object-literal/true", async () =
107108
if (error) { return error }
108109
}
109110

110-
return pass('ok')
111+
return pass("ok")
111112
});
112113

113114
routes.set("/override-content-length/fetch/init/object-literal/false", async () => {
@@ -116,27 +117,42 @@ routes.set("/override-content-length/fetch/init/object-literal/false", async ()
116117
error = assert(actual, expected, `await fetchInitObjectLiteral(false)`)
117118
if (error) { return error }
118119

119-
return pass('ok')
120+
return pass("ok")
120121
});
121122

122123
async function responseInitObjectLiteral(overrideContentLength) {
123-
let response = new Response('meow', {
124+
let response = new Response(new ReadableStream({
125+
start(controller) {
126+
controller.enqueue(new TextEncoder().encode("meow"));
127+
controller.close();
128+
},
129+
}), {
124130
overrideContentLength,
125131
headers: {
126-
"transfer-encoding": "chunked"
132+
"content-length": "4"
127133
}
128134
});
129135
return response;
130136
}
131137

132138
async function responseInitresponseInstance(overrideContentLength) {
133-
let response = new Response('meow', {
139+
let response = new Response(new ReadableStream({
140+
start(controller) {
141+
controller.enqueue(new TextEncoder().encode("meow"));
142+
controller.close();
143+
},
144+
}), {
134145
overrideContentLength,
135146
headers: {
136-
"transfer-encoding": "chunked"
147+
"content-length": "4"
137148
}
138149
});
139-
response = new Response('meow', response);
150+
response = new Response(new ReadableStream({
151+
start(controller) {
152+
controller.enqueue(new TextEncoder().encode("meow"));
153+
controller.close();
154+
},
155+
}), response);
140156
return response;
141157
}
142158

@@ -156,13 +172,31 @@ routes.set("/override-content-length/response/init/response-instance/false", asy
156172
return responseInitresponseInstance(false);
157173
});
158174

175+
async function responseInitfetch(overrideContentLength) {
176+
const response = await fetch("https://httpbin.org/stream-bytes/11", {
177+
backend: "httpbin",
178+
overrideContentLength,
179+
cacheOverride: new CacheOverride('pass')
180+
});
181+
response.headers.set("content-length", "11")
182+
return response;
183+
}
184+
185+
routes.set("/override-content-length/response/init/fetch/false", async () => {
186+
return responseInitfetch(false);
187+
});
188+
189+
routes.set("/override-content-length/response/init/fetch/true", async () => {
190+
return responseInitfetch(true);
191+
});
192+
159193

160194
// TODO: uncomment when we have an implementation of Response.prototype.clone
161195
// async function responseClone(overrideContentLength) {
162-
// let response = new Response('meow', {
163-
// backend: 'httpme',
164-
// method: 'POST',
165-
// body: 'meow',
196+
// let response = new Response("meow", {
197+
// backend: "httpme",
198+
// method: "POST",
199+
// body: "meow",
166200
// overrideContentLength,
167201
// headers: {
168202
// "transfer-encoding": "chunked"

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

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4663,7 +4663,7 @@
46634663
"downstream_response": {
46644664
"status": 200,
46654665
"body": "meow",
4666-
"headers": { "transfer-encoding": "chunked" }
4666+
"headers": { "content-length": "4" }
46674667
}
46684668
},
46694669

@@ -4675,8 +4675,7 @@
46754675
},
46764676
"downstream_response": {
46774677
"status": 200,
4678-
"body": "meow",
4679-
"headers": {"content-length": "4"}
4678+
"body": "meow"
46804679
}
46814680
},
46824681

@@ -4689,7 +4688,7 @@
46894688
"downstream_response": {
46904689
"status": 200,
46914690
"body": "meow",
4692-
"headers": { "transfer-encoding": "chunked" }
4691+
"headers": { "content-length": "4" }
46934692
}
46944693
},
46954694

@@ -4701,8 +4700,30 @@
47014700
},
47024701
"downstream_response": {
47034702
"status": 200,
4704-
"body": "meow",
4705-
"headers": {"content-length": "4"}
4703+
"body": "meow"
4704+
}
4705+
},
4706+
4707+
"GET /override-content-length/response/init/fetch/false": {
4708+
"environments": ["compute"],
4709+
"downstream_request": {
4710+
"method": "GET",
4711+
"pathname": "/override-content-length/response/init/fetch/false"
4712+
},
4713+
"downstream_response": {
4714+
"status": 200
4715+
}
4716+
},
4717+
4718+
"GET /override-content-length/response/init/fetch/true": {
4719+
"environments": ["compute"],
4720+
"downstream_request": {
4721+
"method": "GET",
4722+
"pathname": "/override-content-length/response/init/fetch/true"
4723+
},
4724+
"downstream_response": {
4725+
"status": 200,
4726+
"headers": { "content-length": "11" }
47064727
}
47074728
}
47084729
}

0 commit comments

Comments
 (0)