Bug 1796551 [wpt PR 36570] - WebKit export of https://bugs.webkit.org/show_bug.cgi...
[gecko.git] / netwerk / test / unit / test_multipart_streamconv_empty.js
blob68bc5e6be8047961a184c60caad91afe37ff34f0
1 "use strict";
3 function make_channel(url) {
4   return NetUtil.newChannel({ uri: url, loadUsingSystemPrincipal: true });
7 add_task(async function test_empty() {
8   let uri = "http://localhost";
9   let httpChan = make_channel(uri);
11   let channel = Cc["@mozilla.org/network/input-stream-channel;1"]
12     .createInstance(Ci.nsIInputStreamChannel)
13     .QueryInterface(Ci.nsIChannel);
15   channel.setURI(httpChan.URI);
16   channel.loadInfo = httpChan.loadInfo;
18   let inputStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(
19     Ci.nsIStringInputStream
20   );
21   inputStream.setUTF8Data(""); // Pass an empty string
23   channel.contentStream = inputStream;
25   let [status, buffer] = await new Promise(resolve => {
26     let streamConv = Cc["@mozilla.org/streamConverters;1"].getService(
27       Ci.nsIStreamConverterService
28     );
29     let multipartListener = {
30       _buffer: "",
32       QueryInterface: ChromeUtils.generateQI([
33         "nsIStreamListener",
34         "nsIRequestObserver",
35       ]),
37       onStartRequest(request) {},
38       onDataAvailable(request, stream, offset, count) {
39         try {
40           this._buffer = this._buffer.concat(read_stream(stream, count));
41           dump("BUFFEEE: " + this._buffer + "\n\n");
42         } catch (ex) {
43           do_throw("Error in onDataAvailable: " + ex);
44         }
45       },
47       onStopRequest(request, status) {
48         resolve([status, this._buffer]);
49       },
50     };
51     let conv = streamConv.asyncConvertData(
52       "multipart/mixed",
53       "*/*",
54       multipartListener,
55       null
56     );
58     let chan = make_channel(uri);
59     chan.asyncOpen(conv);
60   });
62   Assert.notEqual(
63     status,
64     Cr.NS_OK,
65     "Should be an error code because content has no boundary"
66   );
67   Assert.equal(buffer, "", "Should have received no content");
68 });