Skip to content

Commit 7a36b02

Browse files
committed
Fix update tests when using ipv6
1 parent 73e583f commit 7a36b02

File tree

1 file changed

+42
-49
lines changed

1 file changed

+42
-49
lines changed

test/unit/node/update.test.ts

Lines changed: 42 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { logger } from "@coder/logger"
22
import * as http from "http"
3-
import { AddressInfo } from "net"
43
import * as path from "path"
54
import { SettingsProvider, UpdateSettings } from "../../../src/node/settings"
65
import { LatestResponse, UpdateProvider } from "../../../src/node/update"
@@ -79,7 +78,7 @@ describe("update", () => {
7978
}
8079

8180
let _provider: UpdateProvider | undefined
82-
let _address: string | AddressInfo | null
81+
let _address: string | undefined
8382
const provider = (): UpdateProvider => {
8483
if (!_provider) {
8584
throw new Error("Update provider has not been created")
@@ -105,12 +104,14 @@ describe("update", () => {
105104
})
106105
})
107106

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}")
111110
}
112111

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)
114115
})
115116

116117
afterAll(() => {
@@ -220,59 +221,51 @@ describe("update", () => {
220221
})
221222

222223
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+
})
235234
})
236235

237236
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+
})
250247
})
251248

252249
it("should resolve the request with response.headers.location", async () => {
253250
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)
258254

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")
262257
})
263258

264259
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+
})
277270
})
278271
})

0 commit comments

Comments
 (0)