|
1 | | -import { afterEach, beforeEach, describe, expect, test } from "bun:test"; |
| 1 | +import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test"; |
2 | 2 | import type { WebSocketLike, WebSocketStreamLike } from "@moq/web-socket-stream"; |
3 | 3 | import { SessionError, StreamError } from "./error.ts"; |
4 | 4 | import * as Frame from "./frame.ts"; |
@@ -308,6 +308,38 @@ describe("Session integration (scripted peer)", () => { |
308 | 308 | session.close(); |
309 | 309 | }); |
310 | 310 |
|
| 311 | + test("application aborts do not log warnings", async () => { |
| 312 | + const warn = spyOn(console, "warn").mockImplementation(() => {}); |
| 313 | + const { session, peer } = connect(); |
| 314 | + |
| 315 | + try { |
| 316 | + await session.ready; |
| 317 | + peer.send({ type: "transport_parameters", params: peerParams() }); |
| 318 | + |
| 319 | + const uni = await session.createUnidirectionalStream(); |
| 320 | + await uni.abort(new Error("application closed uni stream")); |
| 321 | + |
| 322 | + const bidi = await session.createBidirectionalStream(); |
| 323 | + await bidi.writable.abort(new Error("application closed local bidi stream")); |
| 324 | + |
| 325 | + peer.send({ |
| 326 | + type: "stream", |
| 327 | + id: Stream.Id.create(0n, Stream.Dir.Bi, true), |
| 328 | + data: new Uint8Array([1]), |
| 329 | + fin: false, |
| 330 | + }); |
| 331 | + const incoming = await session.incomingBidirectionalStreams.getReader().read(); |
| 332 | + if (!incoming.value) throw new Error("expected an incoming bidirectional stream"); |
| 333 | + await incoming.value.writable.abort(new Error("application closed incoming bidi stream")); |
| 334 | + |
| 335 | + await waitFor(() => peer.count("reset_stream") === 3); |
| 336 | + expect(warn).not.toHaveBeenCalled(); |
| 337 | + } finally { |
| 338 | + session.close(); |
| 339 | + warn.mockRestore(); |
| 340 | + } |
| 341 | + }); |
| 342 | + |
311 | 343 | test("cancelling with a WebTransportError sends its streamErrorCode as STOP_SENDING", async () => { |
312 | 344 | const { session, peer } = connect(); |
313 | 345 | await session.ready; |
|
0 commit comments