1
1
import { logger } from "@coder/logger"
2
2
import * as http from "http"
3
- import { AddressInfo } from "net"
4
3
import * as path from "path"
5
4
import { SettingsProvider , UpdateSettings } from "../../../src/node/settings"
6
5
import { LatestResponse , UpdateProvider } from "../../../src/node/update"
@@ -79,7 +78,7 @@ describe("update", () => {
79
78
}
80
79
81
80
let _provider : UpdateProvider | undefined
82
- let _address : string | AddressInfo | null
81
+ let _address : string | undefined
83
82
const provider = ( ) : UpdateProvider => {
84
83
if ( ! _provider ) {
85
84
throw new Error ( "Update provider has not been created" )
@@ -105,12 +104,14 @@ describe("update", () => {
105
104
} )
106
105
} )
107
106
108
- _address = server . address ( )
109
- if ( ! isAddressInfo ( _address ) ) {
110
- throw new Error ( "unexpected address" )
107
+ const addr = server . address ( )
108
+ if ( ! isAddressInfo ( addr ) ) {
109
+ throw new Error ( "invalid address: ${addr} " )
111
110
}
112
111
113
- _provider = new UpdateProvider ( `http://${ _address ?. address } :${ _address ?. port } /latest` , _settings )
112
+ const host = addr . family === "IPv6" ? `[${ addr . address } ]` : addr . address
113
+ _address = `http://${ host } :${ addr . port } `
114
+ _provider = new UpdateProvider ( `${ _address } /latest` , _settings )
114
115
} )
115
116
116
117
afterAll ( ( ) => {
@@ -220,59 +221,51 @@ describe("update", () => {
220
221
} )
221
222
222
223
it ( "should reject if response has status code 500" , async ( ) => {
223
- if ( isAddressInfo ( _address ) ) {
224
- const mockURL = `http://${ _address . address } :${ _address . port } /reject-status-code`
225
- const provider = new UpdateProvider ( mockURL , settings ( ) )
226
- const update = await provider . getUpdate ( true )
227
-
228
- expect ( update . version ) . toBe ( "unknown" )
229
- expect ( logger . error ) . toHaveBeenCalled ( )
230
- expect ( logger . error ) . toHaveBeenCalledWith ( "Failed to get latest version" , {
231
- identifier : "error" ,
232
- value : `${ mockURL } : 500` ,
233
- } )
234
- }
224
+ const mockURL = `${ _address } /reject-status-code`
225
+ const provider = new UpdateProvider ( mockURL , settings ( ) )
226
+ const update = await provider . getUpdate ( true )
227
+
228
+ expect ( update . version ) . toBe ( "unknown" )
229
+ expect ( logger . error ) . toHaveBeenCalled ( )
230
+ expect ( logger . error ) . toHaveBeenCalledWith ( "Failed to get latest version" , {
231
+ identifier : "error" ,
232
+ value : `${ mockURL } : 500` ,
233
+ } )
235
234
} )
236
235
237
236
it ( "should reject if no location header provided" , async ( ) => {
238
- if ( isAddressInfo ( _address ) ) {
239
- const mockURL = `http://${ _address . address } :${ _address . port } /no-location-header`
240
- const provider = new UpdateProvider ( mockURL , settings ( ) )
241
- const update = await provider . getUpdate ( true )
242
-
243
- expect ( update . version ) . toBe ( "unknown" )
244
- expect ( logger . error ) . toHaveBeenCalled ( )
245
- expect ( logger . error ) . toHaveBeenCalledWith ( "Failed to get latest version" , {
246
- identifier : "error" ,
247
- value : `received redirect with no location header` ,
248
- } )
249
- }
237
+ const mockURL = `${ _address } /no-location-header`
238
+ const provider = new UpdateProvider ( mockURL , settings ( ) )
239
+ const update = await provider . getUpdate ( true )
240
+
241
+ expect ( update . version ) . toBe ( "unknown" )
242
+ expect ( logger . error ) . toHaveBeenCalled ( )
243
+ expect ( logger . error ) . toHaveBeenCalledWith ( "Failed to get latest version" , {
244
+ identifier : "error" ,
245
+ value : `received redirect with no location header` ,
246
+ } )
250
247
} )
251
248
252
249
it ( "should resolve the request with response.headers.location" , async ( ) => {
253
250
version = "4.1.1"
254
- if ( isAddressInfo ( _address ) ) {
255
- const mockURL = `http://${ _address . address } :${ _address . port } /with-location-header`
256
- const provider = new UpdateProvider ( mockURL , settings ( ) )
257
- const update = await provider . getUpdate ( true )
251
+ const mockURL = `${ _address } /with-location-header`
252
+ const provider = new UpdateProvider ( mockURL , settings ( ) )
253
+ const update = await provider . getUpdate ( true )
258
254
259
- expect ( logger . error ) . not . toHaveBeenCalled ( )
260
- expect ( update . version ) . toBe ( "4.1.1" )
261
- }
255
+ expect ( logger . error ) . not . toHaveBeenCalled ( )
256
+ expect ( update . version ) . toBe ( "4.1.1" )
262
257
} )
263
258
264
259
it ( "should reject if more than 10 redirects" , async ( ) => {
265
- if ( isAddressInfo ( _address ) ) {
266
- const mockURL = `http://${ _address . address } :${ _address . port } /redirect/11`
267
- const provider = new UpdateProvider ( mockURL , settings ( ) )
268
- const update = await provider . getUpdate ( true )
269
-
270
- expect ( update . version ) . toBe ( "unknown" )
271
- expect ( logger . error ) . toHaveBeenCalled ( )
272
- expect ( logger . error ) . toHaveBeenCalledWith ( "Failed to get latest version" , {
273
- identifier : "error" ,
274
- value : `reached max redirects` ,
275
- } )
276
- }
260
+ const mockURL = `${ _address } /redirect/11`
261
+ const provider = new UpdateProvider ( mockURL , settings ( ) )
262
+ const update = await provider . getUpdate ( true )
263
+
264
+ expect ( update . version ) . toBe ( "unknown" )
265
+ expect ( logger . error ) . toHaveBeenCalled ( )
266
+ expect ( logger . error ) . toHaveBeenCalledWith ( "Failed to get latest version" , {
267
+ identifier : "error" ,
268
+ value : `reached max redirects` ,
269
+ } )
277
270
} )
278
271
} )
0 commit comments