diff options
Diffstat (limited to 'test/parallel/test-http2-compat-serverresponse-write.js')
-rw-r--r-- | test/parallel/test-http2-compat-serverresponse-write.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/parallel/test-http2-compat-serverresponse-write.js b/test/parallel/test-http2-compat-serverresponse-write.js new file mode 100644 index 0000000000..af3029835e --- /dev/null +++ b/test/parallel/test-http2-compat-serverresponse-write.js @@ -0,0 +1,52 @@ +'use strict'; + +const { + mustCall, + mustNotCall, + expectsError, + hasCrypto, + skip +} = require('../common'); +if (!hasCrypto) + skip('missing crypto'); +const { createServer, connect } = require('http2'); +const assert = require('assert'); + +const server = createServer(); +server.listen(0, mustCall(() => { + const port = server.address().port; + const url = `http://localhost:${port}`; + const client = connect(url, mustCall(() => { + const request = client.request(); + request.resume(); + request.on('end', mustCall()); + request.on('close', mustCall(() => { + client.close(); + })); + })); + + server.once('request', mustCall((request, response) => { + // response.write() returns true + assert(response.write('muahaha', 'utf8', mustCall())); + + response.stream.close(0, mustCall(() => { + response.on('error', mustNotCall()); + + // response.write() without cb returns error + expectsError( + () => { response.write('muahaha'); }, + { + type: Error, + code: 'ERR_HTTP2_INVALID_STREAM', + message: 'The stream has been destroyed' + } + ); + + // response.write() with cb returns falsy value + assert(!response.write('muahaha', mustCall())); + + client.destroy(); + server.close(); + })); + })); +})); |