File size: 1,144 Bytes
cd8bd0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import test from "node:test";
import assert from "node:assert/strict";
import { fakeUpstreamStream } from "../../helpers/fakeUpstreamStream.ts";

test("fakeUpstreamStream emits pushed chunks then closes", async () => {
  const { stream, push, close } = fakeUpstreamStream();
  push("a");
  push("b");
  close();
  const reader = stream.getReader();
  const dec = new TextDecoder();
  let out = "";
  for (;;) {
    const { done, value } = await reader.read();
    if (done) break;
    out += dec.decode(value);
  }
  assert.equal(out, "ab");
});

test("fakeUpstreamStream signals cancel when consumer aborts", async () => {
  const { stream, onCancel } = fakeUpstreamStream();
  let cancelled = false;
  onCancel(() => {
    cancelled = true;
  });
  const reader = stream.getReader();
  await reader.cancel("client-abort");
  assert.equal(cancelled, true);
});

test("fakeUpstreamStream propagates error to reader", async () => {
  const { stream, error } = fakeUpstreamStream();
  error(new Error("upstream boom"));
  const reader = stream.getReader();
  await assert.rejects(async () => {
    await reader.read();
  }, /upstream boom/);
});