'use strict'; const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); const https = require('https'); const tls = require('tls'); const dftProtocol = {}; // test for immutable `opts` { const opts = { foo: 'bar', NPNProtocols: [ 'http/1.1' ] }; const server = https.createServer(opts); tls.convertNPNProtocols([ 'http/1.1' ], dftProtocol); assert.deepStrictEqual(opts, { foo: 'bar', NPNProtocols: [ 'http/1.1' ] }); assert.strictEqual(server.NPNProtocols.compare(dftProtocol.NPNProtocols), 0); } // validate that `createServer` can work with the only argument requestListener { const mustNotCall = common.mustNotCall(); const server = https.createServer(mustNotCall); tls.convertNPNProtocols([ 'http/1.1', 'http/1.0' ], dftProtocol); assert.strictEqual(server.NPNProtocols.compare(dftProtocol.NPNProtocols), 0); assert.strictEqual(server.listeners('request').length, 1); assert.strictEqual(server.listeners('request')[0], mustNotCall); } // validate that `createServer` can work with no arguments { const server = https.createServer(); assert.strictEqual(server.NPNProtocols.compare(dftProtocol.NPNProtocols), 0); assert.strictEqual(server.listeners('request').length, 0); }