1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const fixtures = require('../common/fixtures'); 7const assert = require('assert'); 8const http2 = require('http2'); 9const fs = require('fs'); 10const net = require('net'); 11const path = require('path'); 12 13// HTTP/2 servers can listen on a named pipe. 14 15const tmpdir = require('../common/tmpdir'); 16tmpdir.refresh(); 17const loc = fixtures.path('person-large.jpg'); 18const fn = path.join(tmpdir.path, 'http2-url-tests.js'); 19 20const server = http2.createServer(); 21 22server.on('stream', common.mustCall((stream) => { 23 const dest = stream.pipe(fs.createWriteStream(fn)); 24 25 dest.on('finish', () => { 26 assert.strictEqual(fs.readFileSync(loc).length, 27 fs.readFileSync(fn).length); 28 }); 29 stream.respond(); 30 stream.end(); 31})); 32 33server.listen(common.PIPE, common.mustCall(() => { 34 const client = http2.connect('http://localhost', { 35 createConnection(url) { 36 return net.connect(server.address()); 37 } 38 }); 39 40 const req = client.request({ ':method': 'POST' }); 41 req.on('response', common.mustCall()); 42 req.resume(); 43 44 req.on('close', common.mustCall(() => { 45 server.close(); 46 client.close(); 47 })); 48 49 const str = fs.createReadStream(loc); 50 str.on('end', common.mustCall()); 51 str.pipe(req); 52})); 53