| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const http = require('http'); |
| const Countdown = require('../common/countdown'); |
| |
| function explicit(req, res) { |
| assert.throws(() => { |
| res.writeHead(200, 'OK\r\nContent-Type: text/html\r\n'); |
| }, /Invalid character in statusMessage/); |
| |
| assert.throws(() => { |
| res.writeHead(200, 'OK\u010D\u010AContent-Type: gotcha\r\n'); |
| }, /Invalid character in statusMessage/); |
| |
| res.statusMessage = 'OK'; |
| res.end(); |
| } |
| |
| function implicit(req, res) { |
| assert.throws(() => { |
| res.statusMessage = 'OK\r\nContent-Type: text/html\r\n'; |
| res.writeHead(200); |
| }, /Invalid character in statusMessage/); |
| res.statusMessage = 'OK'; |
| res.end(); |
| } |
| |
| const server = http.createServer((req, res) => { |
| if (req.url === '/explicit') { |
| explicit(req, res); |
| } else { |
| implicit(req, res); |
| } |
| }).listen(0, common.mustCall(() => { |
| const hostname = 'localhost'; |
| const countdown = new Countdown(2, () => server.close()); |
| const url = `http://${hostname}:${server.address().port}`; |
| const check = common.mustCall((res) => { |
| assert.notStrictEqual(res.headers['content-type'], 'text/html'); |
| assert.notStrictEqual(res.headers['content-type'], 'gotcha'); |
| countdown.dec(); |
| }, 2); |
| http.get(`${url}/explicit`, check).end(); |
| http.get(`${url}/implicit`, check).end(); |
| })); |