summaryrefslogtreecommitdiff
path: root/cli/tests/unit/cache_api_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/cache_api_test.ts')
-rw-r--r--cli/tests/unit/cache_api_test.ts29
1 files changed, 28 insertions, 1 deletions
diff --git a/cli/tests/unit/cache_api_test.ts b/cli/tests/unit/cache_api_test.ts
index 16996c821..7bc372003 100644
--- a/cli/tests/unit/cache_api_test.ts
+++ b/cli/tests/unit/cache_api_test.ts
@@ -130,7 +130,7 @@ Deno.test(async function cachePutResourceLeak() {
await assertRejects(
async () => {
await cache.put(
- new Request("https://example.com/"),
+ new Request("https://example.com/leak"),
new Response(stream),
);
},
@@ -138,3 +138,30 @@ Deno.test(async function cachePutResourceLeak() {
"leak",
);
});
+
+Deno.test(async function cachePutFailedBody() {
+ const cacheName = "cache-v1";
+ const cache = await caches.open(cacheName);
+
+ const request = new Request("https://example.com/failed-body");
+ const stream = new ReadableStream({
+ start(controller) {
+ controller.error(new Error("corrupt"));
+ },
+ });
+
+ await assertRejects(
+ async () => {
+ await cache.put(
+ request,
+ new Response(stream),
+ );
+ },
+ Error,
+ "corrupt",
+ );
+
+ const response = await cache.match(request);
+ // if it fails to read the body, the cache should be empty
+ assertEquals(response, undefined);
+});