@@ -475,6 +475,26 @@ describe('net module', () => {
475
475
await collectStreamBody ( response ) ;
476
476
} ) ;
477
477
478
+ it ( 'should not change the case of header name' , async ( ) => {
479
+ const customHeaderName = 'X-Header-Name' ;
480
+ const customHeaderValue = 'value' ;
481
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
482
+ expect ( request . headers [ customHeaderName . toLowerCase ( ) ] ) . to . equal ( customHeaderValue . toString ( ) ) ;
483
+ expect ( request . rawHeaders . includes ( customHeaderName ) ) . to . equal ( true ) ;
484
+ response . statusCode = 200 ;
485
+ response . statusMessage = 'OK' ;
486
+ response . end ( ) ;
487
+ } ) ;
488
+
489
+ const urlRequest = net . request ( serverUrl ) ;
490
+ urlRequest . setHeader ( customHeaderName , customHeaderValue ) ;
491
+ expect ( urlRequest . getHeader ( customHeaderName ) ) . to . equal ( customHeaderValue ) ;
492
+ urlRequest . write ( '' ) ;
493
+ const response = await getResponse ( urlRequest ) ;
494
+ expect ( response . statusCode ) . to . equal ( 200 ) ;
495
+ await collectStreamBody ( response ) ;
496
+ } ) ;
497
+
478
498
it ( 'should not be able to set a custom HTTP request header after first write' , async ( ) => {
479
499
const customHeaderName = 'Some-Custom-Header-Name' ;
480
500
const customHeaderValue = 'Some-Customer-Header-Value' ;
@@ -777,6 +797,140 @@ describe('net module', () => {
777
797
it ( 'should not store cookies' ) ;
778
798
} ) ;
779
799
800
+ it ( 'should set sec-fetch-site to same-origin for request from same origin' , async ( ) => {
801
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
802
+ expect ( request . headers [ 'sec-fetch-site' ] ) . to . equal ( 'same-origin' ) ;
803
+ response . statusCode = 200 ;
804
+ response . statusMessage = 'OK' ;
805
+ response . end ( ) ;
806
+ } ) ;
807
+ const urlRequest = net . request ( {
808
+ url : serverUrl ,
809
+ origin : serverUrl
810
+ } ) ;
811
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
812
+ } ) ;
813
+
814
+ it ( 'should set sec-fetch-site to same-origin for request with the same origin header' , async ( ) => {
815
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
816
+ expect ( request . headers [ 'sec-fetch-site' ] ) . to . equal ( 'same-origin' ) ;
817
+ response . statusCode = 200 ;
818
+ response . statusMessage = 'OK' ;
819
+ response . end ( ) ;
820
+ } ) ;
821
+ const urlRequest = net . request ( {
822
+ url : serverUrl
823
+ } ) ;
824
+ urlRequest . setHeader ( 'Origin' , serverUrl ) ;
825
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
826
+ } ) ;
827
+
828
+ it ( 'should set sec-fetch-site to cross-site for request from other origin' , async ( ) => {
829
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
830
+ expect ( request . headers [ 'sec-fetch-site' ] ) . to . equal ( 'cross-site' ) ;
831
+ response . statusCode = 200 ;
832
+ response . statusMessage = 'OK' ;
833
+ response . end ( ) ;
834
+ } ) ;
835
+ const urlRequest = net . request ( {
836
+ url : serverUrl ,
837
+ origin : 'https://not-exists.com'
838
+ } ) ;
839
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
840
+ } ) ;
841
+
842
+ it ( 'should not send sec-fetch-user header by default' , async ( ) => {
843
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
844
+ expect ( request . headers ) . not . to . have . property ( 'sec-fetch-user' ) ;
845
+ response . statusCode = 200 ;
846
+ response . statusMessage = 'OK' ;
847
+ response . end ( ) ;
848
+ } ) ;
849
+ const urlRequest = net . request ( {
850
+ url : serverUrl
851
+ } ) ;
852
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
853
+ } ) ;
854
+
855
+ it ( 'should set sec-fetch-user to ?1 if requested' , async ( ) => {
856
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
857
+ expect ( request . headers [ 'sec-fetch-user' ] ) . to . equal ( '?1' ) ;
858
+ response . statusCode = 200 ;
859
+ response . statusMessage = 'OK' ;
860
+ response . end ( ) ;
861
+ } ) ;
862
+ const urlRequest = net . request ( {
863
+ url : serverUrl
864
+ } ) ;
865
+ urlRequest . setHeader ( 'sec-fetch-user' , '?1' ) ;
866
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
867
+ } ) ;
868
+
869
+ it ( 'should set sec-fetch-mode to no-cors by default' , async ( ) => {
870
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
871
+ expect ( request . headers [ 'sec-fetch-mode' ] ) . to . equal ( 'no-cors' ) ;
872
+ response . statusCode = 200 ;
873
+ response . statusMessage = 'OK' ;
874
+ response . end ( ) ;
875
+ } ) ;
876
+ const urlRequest = net . request ( {
877
+ url : serverUrl
878
+ } ) ;
879
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
880
+ } ) ;
881
+
882
+ [ 'navigate' , 'cors' , 'no-cors' , 'same-origin' ] . forEach ( ( mode ) => {
883
+ it ( `should set sec-fetch-mode to ${ mode } if requested` , async ( ) => {
884
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
885
+ expect ( request . headers [ 'sec-fetch-mode' ] ) . to . equal ( mode ) ;
886
+ response . statusCode = 200 ;
887
+ response . statusMessage = 'OK' ;
888
+ response . end ( ) ;
889
+ } ) ;
890
+ const urlRequest = net . request ( {
891
+ url : serverUrl ,
892
+ origin : serverUrl
893
+ } ) ;
894
+ urlRequest . setHeader ( 'sec-fetch-mode' , mode ) ;
895
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
896
+ } ) ;
897
+ } ) ;
898
+
899
+ it ( 'should set sec-fetch-dest to empty by default' , async ( ) => {
900
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
901
+ expect ( request . headers [ 'sec-fetch-dest' ] ) . to . equal ( 'empty' ) ;
902
+ response . statusCode = 200 ;
903
+ response . statusMessage = 'OK' ;
904
+ response . end ( ) ;
905
+ } ) ;
906
+ const urlRequest = net . request ( {
907
+ url : serverUrl
908
+ } ) ;
909
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
910
+ } ) ;
911
+
912
+ [
913
+ 'empty' , 'audio' , 'audioworklet' , 'document' , 'embed' , 'font' ,
914
+ 'frame' , 'iframe' , 'image' , 'manifest' , 'object' , 'paintworklet' ,
915
+ 'report' , 'script' , 'serviceworker' , 'style' , 'track' , 'video' ,
916
+ 'worker' , 'xslt'
917
+ ] . forEach ( ( dest ) => {
918
+ it ( `should set sec-fetch-dest to ${ dest } if requested` , async ( ) => {
919
+ const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
920
+ expect ( request . headers [ 'sec-fetch-dest' ] ) . to . equal ( dest ) ;
921
+ response . statusCode = 200 ;
922
+ response . statusMessage = 'OK' ;
923
+ response . end ( ) ;
924
+ } ) ;
925
+ const urlRequest = net . request ( {
926
+ url : serverUrl ,
927
+ origin : serverUrl
928
+ } ) ;
929
+ urlRequest . setHeader ( 'sec-fetch-dest' , dest ) ;
930
+ await collectStreamBody ( await getResponse ( urlRequest ) ) ;
931
+ } ) ;
932
+ } ) ;
933
+
780
934
it ( 'should be able to abort an HTTP request before first write' , async ( ) => {
781
935
const serverUrl = await respondOnce . toSingleURL ( ( request , response ) => {
782
936
response . end ( ) ;
0 commit comments