@@ -21,6 +21,13 @@ const cookies = [
21
21
const s = http . createServer ( common . mustCall ( ( req , res ) => {
22
22
switch ( test ) {
23
23
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
+
24
31
assert . throws ( ( ) => {
25
32
res . setHeader ( ) ;
26
33
} , / ^ 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) => {
34
41
res . removeHeader ( ) ;
35
42
} , / ^ E r r o r : " n a m e " a r g u m e n t i s r e q u i r e d f o r r e m o v e H e a d e r \( n a m e \) $ / ) ;
36
43
44
+ const arrayValues = [ 1 , 2 , 3 ] ;
37
45
res . setHeader ( 'x-test-header' , 'testing' ) ;
38
46
res . setHeader ( 'X-TEST-HEADER2' , 'testing' ) ;
39
47
res . setHeader ( 'set-cookie' , cookies ) ;
40
- res . setHeader ( 'x-test-array-header' , [ 1 , 2 , 3 ] ) ;
48
+ res . setHeader ( 'x-test-array-header' , arrayValues ) ;
41
49
42
50
assert . strictEqual ( res . getHeader ( 'x-test-header' ) , 'testing' ) ;
43
51
assert . strictEqual ( res . getHeader ( 'x-test-header2' ) , 'testing' ) ;
44
52
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
+
45
85
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 ) ;
46
90
break ;
47
91
48
92
case 'contentLength' :
0 commit comments