• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const http = require('http');
5
6{
7  const server = http.createServer({
8    requireHostHeader: false,
9    joinDuplicateHeaders: true
10  }, common.mustCall((req, res) => {
11    assert.strictEqual(req.headers.authorization, '1, 2');
12    assert.strictEqual(req.headers.cookie, 'foo; bar');
13    res.writeHead(200, ['authorization', '3', 'authorization', '4', 'cookie', 'foo', 'cookie', 'bar']);
14    res.end();
15  }));
16
17  server.listen(0, common.mustCall(() => {
18    http.get({
19      port: server.address().port,
20      headers: ['authorization', '1', 'authorization', '2', 'cookie', 'foo', 'cookie', 'bar'],
21      joinDuplicateHeaders: true
22    }, (res) => {
23      assert.strictEqual(res.statusCode, 200);
24      assert.strictEqual(res.headers.authorization, '3, 4');
25      assert.strictEqual(res.headers.cookie, 'foo; bar');
26      res.resume().on('end', common.mustCall(() => {
27        server.close();
28      }));
29    });
30  }));
31}
32
33{
34  // Server joinDuplicateHeaders false
35  const server = http.createServer({
36    requireHostHeader: false,
37    joinDuplicateHeaders: false
38  }, common.mustCall((req, res) => {
39    assert.strictEqual(req.headers.authorization, '1'); // non joined value
40    res.writeHead(200, ['authorization', '3', 'authorization', '4']);
41    res.end();
42  }));
43
44  server.listen(0, common.mustCall(() => {
45    http.get({
46      port: server.address().port,
47      headers: ['authorization', '1', 'authorization', '2'],
48      joinDuplicateHeaders: true
49    }, (res) => {
50      assert.strictEqual(res.statusCode, 200);
51      assert.strictEqual(res.headers.authorization, '3, 4');
52      res.resume().on('end', common.mustCall(() => {
53        server.close();
54      }));
55    });
56  }));
57}
58
59{
60  // Client joinDuplicateHeaders false
61  const server = http.createServer({
62    requireHostHeader: false,
63    joinDuplicateHeaders: true
64  }, common.mustCall((req, res) => {
65    assert.strictEqual(req.headers.authorization, '1, 2');
66    res.writeHead(200, ['authorization', '3', 'authorization', '4']);
67    res.end();
68  }));
69
70  server.listen(0, common.mustCall(() => {
71    http.get({
72      port: server.address().port,
73      headers: ['authorization', '1', 'authorization', '2'],
74      joinDuplicateHeaders: false
75    }, (res) => {
76      assert.strictEqual(res.statusCode, 200);
77      assert.strictEqual(res.headers.authorization, '3'); // non joined value
78      res.resume().on('end', common.mustCall(() => {
79        server.close();
80      }));
81    });
82  }));
83}
84