File tree 2 files changed +24
-7
lines changed
2 files changed +24
-7
lines changed Original file line number Diff line number Diff line change @@ -56,13 +56,20 @@ function regFetch (uri, opts) {
56
56
if ( typeof q === 'string' ) {
57
57
q = qs . parse ( q )
58
58
}
59
- const parsed = url . parse ( uri )
60
- parsed . search = '?' + qs . stringify (
61
- parsed . query
62
- ? Object . assign ( qs . parse ( parsed . query ) , q )
63
- : q
64
- )
65
- uri = url . format ( parsed )
59
+ Object . keys ( q ) . forEach ( key => {
60
+ if ( q [ key ] === undefined ) {
61
+ delete q [ key ]
62
+ }
63
+ } )
64
+ if ( Object . keys ( q ) . length ) {
65
+ const parsed = url . parse ( uri )
66
+ parsed . search = '?' + qs . stringify (
67
+ parsed . query
68
+ ? Object . assign ( qs . parse ( parsed . query ) , q )
69
+ : q
70
+ )
71
+ uri = url . format ( parsed )
72
+ }
66
73
}
67
74
return opts . Promise . resolve ( body ) . then ( body => fetch ( uri , {
68
75
agent : opts . agent ,
Original file line number Diff line number Diff line change @@ -220,6 +220,16 @@ test('query strings', t => {
220
220
. then ( json => t . equal ( json . hello , 'world' , 'query-string merged' ) )
221
221
} )
222
222
223
+ test ( 'query strings - undefined values' , t => {
224
+ tnock ( t , OPTS . registry )
225
+ . get ( '/hello?who=wor%20ld' )
226
+ . reply ( 200 , { ok : true } )
227
+ return fetch . json ( '/hello' , Object . assign ( {
228
+ query : { hi : undefined , who : 'wor ld' }
229
+ } , OPTS ) )
230
+ . then ( json => t . ok ( json . ok , 'undefined keys not included in query string' ) )
231
+ } )
232
+
223
233
test ( 'json()' , t => {
224
234
tnock ( t , OPTS . registry )
225
235
. get ( '/hello' )
You can’t perform that action at this time.
0 commit comments