11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_ci 31cb0ef41Sopenharmony_ciconst common = require('../common'); 41cb0ef41Sopenharmony_ciif (!common.hasCrypto) 51cb0ef41Sopenharmony_ci common.skip('missing crypto'); 61cb0ef41Sopenharmony_ciconst assert = require('assert'); 71cb0ef41Sopenharmony_ciconst h2 = require('http2'); 81cb0ef41Sopenharmony_ciconst net = require('net'); 91cb0ef41Sopenharmony_ci 101cb0ef41Sopenharmony_ci// Http2ServerRequest should expose convenience properties 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_ciconst server = h2.createServer(); 131cb0ef41Sopenharmony_ciserver.listen(0, common.mustCall(function() { 141cb0ef41Sopenharmony_ci const port = server.address().port; 151cb0ef41Sopenharmony_ci server.once('request', common.mustCall(function(request, response) { 161cb0ef41Sopenharmony_ci const expected = { 171cb0ef41Sopenharmony_ci version: '2.0', 181cb0ef41Sopenharmony_ci httpVersionMajor: 2, 191cb0ef41Sopenharmony_ci httpVersionMinor: 0 201cb0ef41Sopenharmony_ci }; 211cb0ef41Sopenharmony_ci 221cb0ef41Sopenharmony_ci assert.strictEqual(request.httpVersion, expected.version); 231cb0ef41Sopenharmony_ci assert.strictEqual(request.httpVersionMajor, expected.httpVersionMajor); 241cb0ef41Sopenharmony_ci assert.strictEqual(request.httpVersionMinor, expected.httpVersionMinor); 251cb0ef41Sopenharmony_ci 261cb0ef41Sopenharmony_ci assert.ok(request.socket instanceof net.Socket); 271cb0ef41Sopenharmony_ci assert.ok(request.connection instanceof net.Socket); 281cb0ef41Sopenharmony_ci assert.strictEqual(request.socket, request.connection); 291cb0ef41Sopenharmony_ci 301cb0ef41Sopenharmony_ci response.on('finish', common.mustCall(function() { 311cb0ef41Sopenharmony_ci process.nextTick(() => { 321cb0ef41Sopenharmony_ci assert.ok(request.socket); 331cb0ef41Sopenharmony_ci server.close(); 341cb0ef41Sopenharmony_ci }); 351cb0ef41Sopenharmony_ci })); 361cb0ef41Sopenharmony_ci response.end(); 371cb0ef41Sopenharmony_ci })); 381cb0ef41Sopenharmony_ci 391cb0ef41Sopenharmony_ci const url = `http://localhost:${port}`; 401cb0ef41Sopenharmony_ci const client = h2.connect(url, common.mustCall(function() { 411cb0ef41Sopenharmony_ci const headers = { 421cb0ef41Sopenharmony_ci ':path': '/foobar', 431cb0ef41Sopenharmony_ci ':method': 'GET', 441cb0ef41Sopenharmony_ci ':scheme': 'http', 451cb0ef41Sopenharmony_ci ':authority': `localhost:${port}` 461cb0ef41Sopenharmony_ci }; 471cb0ef41Sopenharmony_ci const request = client.request(headers); 481cb0ef41Sopenharmony_ci request.on('end', common.mustCall(function() { 491cb0ef41Sopenharmony_ci client.close(); 501cb0ef41Sopenharmony_ci })); 511cb0ef41Sopenharmony_ci request.end(); 521cb0ef41Sopenharmony_ci request.resume(); 531cb0ef41Sopenharmony_ci })); 541cb0ef41Sopenharmony_ci})); 55