@@ -21,6 +21,7 @@ describe('open-api HTTP adapter', function () {
2121 let originalProxyAgent ;
2222 let originalRequest ;
2323 let agentOptions ;
24+ let requestOptions ;
2425
2526 beforeEach ( function ( ) {
2627 originalEnv = Object . fromEntries (
@@ -34,6 +35,7 @@ describe('open-api HTTP adapter', function () {
3435 originalProxyAgent = undici . ProxyAgent ;
3536 originalRequest = undici . request ;
3637 agentOptions = [ ] ;
38+ requestOptions = undefined ;
3739
3840 class CapturingAgent {
3941 constructor ( options ) {
@@ -47,14 +49,17 @@ describe('open-api HTTP adapter', function () {
4749
4850 undici . EnvHttpProxyAgent = CapturingAgent ;
4951 undici . ProxyAgent = CapturingAgent ;
50- undici . request = async ( ) => ( {
51- statusCode : 200 ,
52- headers : { } ,
53- body : {
54- text : async ( ) => '' ,
55- arrayBuffer : async ( ) => new ArrayBuffer ( 0 ) ,
56- } ,
57- } ) ;
52+ undici . request = async ( _url , options ) => {
53+ requestOptions = options ;
54+ return {
55+ statusCode : 200 ,
56+ headers : { } ,
57+ body : {
58+ text : async ( ) => '' ,
59+ arrayBuffer : async ( ) => new ArrayBuffer ( 0 ) ,
60+ } ,
61+ } ;
62+ } ;
5863 } ) ;
5964
6065 afterEach ( function ( ) {
@@ -90,4 +95,42 @@ describe('open-api HTTP adapter', function () {
9095 expect ( agentOptions [ 0 ] . connect . allowH2 ) . to . equal ( false ) ;
9196 expect ( agentOptions [ 0 ] . requestTls . allowH2 ) . to . equal ( false ) ;
9297 } ) ;
98+
99+ it ( 'adds a curl-like Accept header by default in Node.js' , async function ( ) {
100+ await HTTP ( {
101+ headers : {
102+ 'User-Agent' : 'Surge' ,
103+ } ,
104+ } ) . get ( 'https://example.com/subscription' ) ;
105+
106+ expect ( requestOptions . headers ) . to . include ( {
107+ 'User-Agent' : 'Surge' ,
108+ Accept : '*/*' ,
109+ } ) ;
110+ } ) ;
111+
112+ it ( 'keeps an explicit Accept header in Node.js' , async function ( ) {
113+ await HTTP ( {
114+ headers : {
115+ accept : 'application/json' ,
116+ } ,
117+ } ) . get ( 'https://example.com/subscription' ) ;
118+
119+ expect ( requestOptions . headers ) . to . deep . equal ( {
120+ accept : 'application/json' ,
121+ } ) ;
122+ } ) ;
123+
124+ it ( 'omits Accept when callers set it to null in Node.js' , async function ( ) {
125+ await HTTP ( {
126+ headers : {
127+ 'User-Agent' : 'Surge' ,
128+ Accept : null ,
129+ } ,
130+ } ) . get ( 'https://example.com/subscription' ) ;
131+
132+ expect ( requestOptions . headers ) . to . deep . equal ( {
133+ 'User-Agent' : 'Surge' ,
134+ } ) ;
135+ } ) ;
93136} ) ;
0 commit comments