@@ -21,6 +21,13 @@ const cookies = [
2121const s = http . createServer ( common . mustCall ( ( req , res ) => {
2222 switch ( test ) {
2323 case 'headers' :
24+ // Check that header-related functions work before setting any headers
25+ // eslint-disable-next-line no-restricted-properties
26+ assert . deepEqual ( res . getHeaders ( ) , { } ) ;
27+ assert . deepStrictEqual ( res . getHeaderNames ( ) , [ ] ) ;
28+ assert . deepStrictEqual ( res . hasHeader ( 'Connection' ) , false ) ;
29+ assert . deepStrictEqual ( res . getHeader ( 'Connection' ) , undefined ) ;
30+
2431 assert . throws ( ( ) => {
2532 res . setHeader ( ) ;
2633 } , / ^ T y p e E r r o r : H e a d e r n a m e m u s t b e a v a l i d H T T P T o k e n \[ " u n d e f i n e d " \] $ / ) ;
@@ -34,15 +41,52 @@ const s = http.createServer(common.mustCall((req, res) => {
3441 res . removeHeader ( ) ;
3542 } , / ^ T y p e E r r o r : " n a m e " a r g u m e n t m u s t b e a s t r i n g $ / ) ;
3643
44+ const arrayValues = [ 1 , 2 , 3 ] ;
3745 res . setHeader ( 'x-test-header' , 'testing' ) ;
3846 res . setHeader ( 'X-TEST-HEADER2' , 'testing' ) ;
3947 res . setHeader ( 'set-cookie' , cookies ) ;
40- res . setHeader ( 'x-test-array-header' , [ 1 , 2 , 3 ] ) ;
48+ res . setHeader ( 'x-test-array-header' , arrayValues ) ;
4149
4250 assert . strictEqual ( res . getHeader ( 'x-test-header' ) , 'testing' ) ;
4351 assert . strictEqual ( res . getHeader ( 'x-test-header2' ) , 'testing' ) ;
4452
53+ const headersCopy = res . getHeaders ( ) ;
54+ // eslint-disable-next-line no-restricted-properties
55+ assert . deepEqual ( headersCopy , {
56+ 'x-test-header' : 'testing' ,
57+ 'x-test-header2' : 'testing' ,
58+ 'set-cookie' : cookies ,
59+ 'x-test-array-header' : arrayValues
60+ } ) ;
61+ // eslint-disable-next-line no-restricted-properties
62+ assert . deepEqual ( headersCopy [ 'set-cookie' ] , cookies ) ;
63+ assert . strictEqual ( headersCopy [ 'x-test-array-header' ] , arrayValues ) ;
64+
65+ assert . deepStrictEqual ( res . getHeaderNames ( ) ,
66+ [ 'x-test-header' , 'x-test-header2' ,
67+ 'set-cookie' , 'x-test-array-header' ] ) ;
68+
69+ assert . strictEqual ( res . hasHeader ( 'x-test-header2' ) , true ) ;
70+ assert . strictEqual ( res . hasHeader ( 'X-TEST-HEADER2' ) , true ) ;
71+ assert . strictEqual ( res . hasHeader ( 'X-Test-Header2' ) , true ) ;
72+ assert . throws ( ( ) => {
73+ res . hasHeader ( ) ;
74+ } , / ^ T y p e E r r o r : " n a m e " a r g u m e n t m u s t b e a s t r i n g $ / ) ;
75+ assert . throws ( ( ) => {
76+ res . hasHeader ( null ) ;
77+ } , / ^ T y p e E r r o r : " n a m e " a r g u m e n t m u s t b e a s t r i n g $ / ) ;
78+ assert . throws ( ( ) => {
79+ res . hasHeader ( true ) ;
80+ } , / ^ T y p e E r r o r : " n a m e " a r g u m e n t m u s t b e a s t r i n g $ / ) ;
81+ assert . throws ( ( ) => {
82+ res . hasHeader ( { toString : ( ) => 'X-TEST-HEADER2' } ) ;
83+ } , / ^ T y p e E r r o r : " n a m e " a r g u m e n t m u s t b e a s t r i n g $ / ) ;
84+
4585 res . removeHeader ( 'x-test-header2' ) ;
86+
87+ assert . strictEqual ( res . hasHeader ( 'x-test-header2' ) , false ) ;
88+ assert . strictEqual ( res . hasHeader ( 'X-TEST-HEADER2' ) , false ) ;
89+ assert . strictEqual ( res . hasHeader ( 'X-Test-Header2' ) , false ) ;
4690 break ;
4791
4892 case 'contentLength' :
0 commit comments