'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', ALPNProtocols: [ 'http/1.1' ] }; const server = https.createServer(opts); tls.convertALPNProtocols([ 'http/1.1' ], dftProtocol); assert.deepStrictEqual(opts, { foo: 'bar', ALPNProtocols: [ 'http/1.1' ] }); assert.strictEqual(server.ALPNProtocols.compare(dftProtocol.ALPNProtocols), 0); } // Validate that `createServer` can work with the only argument requestListener { const mustNotCall = common.mustNotCall(); const server = https.createServer(mustNotCall); tls.convertALPNProtocols([ 'http/1.1' ], dftProtocol); assert.strictEqual(server.ALPNProtocols.compare(dftProtocol.ALPNProtocols), 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.ALPNProtocols.compare(dftProtocol.ALPNProtocols), 0); assert.strictEqual(server.listeners('request').length, 0); }