@@ -3,44 +3,75 @@ var common = require('../common'),
33 assert = require ( 'assert' ) ,
44 http = require ( 'http' ) ;
55
6- var testIndex = 0 ,
7- responses = 0 ;
6+ var testIndex = 0 ;
7+ const testCount = 4 * 6 ;
8+ const responseBody = 'Hi mars!' ;
89
910var server = http . createServer ( function ( req , res ) {
10- switch ( testIndex ++ ) {
11+ function reply ( header ) {
12+ switch ( testIndex % 4 ) {
1113 case 0 :
12- res . writeHead ( 200 , { test : 'foo \r\ninvalid: bar' } ) ;
14+ res . writeHead ( 200 , { a : header , b : header } ) ;
1315 break ;
1416 case 1 :
15- res . writeHead ( 200 , { test : 'foo \ninvalid: bar' } ) ;
17+ res . setHeader ( 'a' , header ) ;
18+ res . setHeader ( 'b' , header ) ;
19+ res . writeHead ( 200 ) ;
1620 break ;
1721 case 2 :
18- res . writeHead ( 200 , { test : 'foo \rinvalid: bar' } ) ;
22+ res . setHeader ( 'a' , header ) ;
23+ res . writeHead ( 200 , { b : header } ) ;
1924 break ;
2025 case 3 :
21- res . writeHead ( 200 , { test : 'foo \n\n\ninvalid: bar' } ) ;
26+ res . setHeader ( 'a' , [ header ] ) ;
27+ res . writeHead ( 200 , { b : header } ) ;
28+ break ;
29+ default :
30+ assert . fail ( 'unreachable' ) ;
31+ }
32+ res . end ( responseBody ) ;
33+ }
34+ switch ( ( testIndex / 4 ) | 0 ) {
35+ case 0 :
36+ reply ( 'foo \r\ninvalid: bar' ) ;
37+ break ;
38+ case 1 :
39+ reply ( 'foo \ninvalid: bar' ) ;
40+ break ;
41+ case 2 :
42+ reply ( 'foo \rinvalid: bar' ) ;
43+ break ;
44+ case 3 :
45+ reply ( 'foo \n\n\ninvalid: bar' ) ;
2246 break ;
2347 case 4 :
24- res . writeHead ( 200 , { test : 'foo \r\n \r\n \r\ninvalid: bar' } ) ;
25- server . close ( ) ;
48+ reply ( 'foo \r\n \r\n \r\ninvalid: bar' ) ;
49+ break ;
50+ case 5 :
51+ reply ( 'foo \r \n \r \n \r \ninvalid: bar' ) ;
2652 break ;
2753 default :
2854 assert ( false ) ;
2955 }
30- res . end ( 'Hi mars!' ) ;
56+ if ( ++ testIndex === testCount ) {
57+ server . close ( ) ;
58+ }
3159} ) ;
3260
33- server . listen ( common . PORT , function ( ) {
34- for ( var i = 0 ; i < 5 ; i ++ ) {
35- var req = http . get ( { port : common . PORT , path : '/' } , function ( res ) {
36- assert . strictEqual ( res . headers . test , 'foo invalid: bar' ) ;
61+ server . listen ( common . PORT , common . mustCall ( function ( ) {
62+ for ( var i = 0 ; i < testCount ; i ++ ) {
63+ http . get ( { port : common . PORT , path : '/' } , common . mustCall ( function ( res ) {
64+ assert . strictEqual ( res . headers . a , 'foo invalid: bar' ) ;
65+ assert . strictEqual ( res . headers . b , 'foo invalid: bar' ) ;
66+ assert . strictEqual ( res . headers . foo , undefined ) ;
3767 assert . strictEqual ( res . headers . invalid , undefined ) ;
38- responses ++ ;
68+ var data = '' ;
69+ res . setEncoding ( 'utf8' ) ;
70+ res . on ( 'data' , function ( s ) { data += s ; } ) ;
71+ res . on ( 'end' , common . mustCall ( function ( ) {
72+ assert . equal ( data , responseBody ) ;
73+ } ) ) ;
3974 res . resume ( ) ;
40- } ) ;
75+ } ) ) ;
4176 }
42- } ) ;
43-
44- process . on ( 'exit' , function ( ) {
45- assert . strictEqual ( responses , 5 ) ;
46- } ) ;
77+ } ) ) ;
0 commit comments