• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright Joyent, Inc. and other Node contributors.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and associated documentation files (the
5// "Software"), to deal in the Software without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Software, and to permit
8// persons to whom the Software is furnished to do so, subject to the
9// following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20// USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22'use strict';
23require('../common');
24const assert = require('assert');
25const http = require('http');
26const Countdown = require('../common/countdown');
27
28// Simple test of Node's HTTP ServerResponse.statusCode
29// ServerResponse.prototype.statusCode
30
31const tests = [200, 202, 300, 404, 451, 500];
32let test;
33const countdown = new Countdown(tests.length, () => s.close());
34
35const s = http.createServer(function(req, res) {
36  res.writeHead(test, { 'Content-Type': 'text/plain' });
37  console.log(`--\nserver: statusCode after writeHead: ${res.statusCode}`);
38  assert.strictEqual(res.statusCode, test);
39  res.end('hello world\n');
40});
41
42s.listen(0, nextTest);
43
44
45function nextTest() {
46  test = tests.shift();
47
48  http.get({ port: s.address().port }, function(response) {
49    console.log(`client: expected status: ${test}`);
50    console.log(`client: statusCode: ${response.statusCode}`);
51    assert.strictEqual(response.statusCode, test);
52    response.on('end', function() {
53      if (countdown.dec())
54        nextTest();
55    });
56    response.resume();
57  });
58}
59