Skip to content

Commit a90d341

Browse files
committed
Fix tests when using ipv6
1 parent 364dac1 commit a90d341

File tree

3 files changed

+45
-66
lines changed

3 files changed

+45
-66
lines changed

test/unit/node/app.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ describe("createApp", () => {
9292
app.dispose()
9393
}
9494

95-
expect(() => masterBall()).rejects.toThrow(`listen EACCES: permission denied 127.0.0.1:${port}`)
95+
expect(() => masterBall()).rejects.toThrow("listen EACCES: permission denied")
9696
})
9797

9898
it("should unlink a socket before listening on the socket", async () => {

test/unit/node/update.test.ts

Lines changed: 44 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { logger } from "@coder/logger"
22
import * as http from "http"
3-
import { AddressInfo } from "net"
43
import * as path from "path"
4+
import { ensureAddress } from "../../../src/node/app"
55
import { SettingsProvider, UpdateSettings } from "../../../src/node/settings"
66
import { LatestResponse, UpdateProvider } from "../../../src/node/update"
7-
import { clean, isAddressInfo, mockLogger, tmpdir } from "../../utils/helpers"
7+
import { clean, mockLogger, tmpdir } from "../../utils/helpers"
88

99
describe("update", () => {
1010
let version = "1.0.0"
@@ -79,14 +79,14 @@ describe("update", () => {
7979
}
8080

8181
let _provider: UpdateProvider | undefined
82-
let _address: string | AddressInfo | null
8382
const provider = (): UpdateProvider => {
8483
if (!_provider) {
8584
throw new Error("Update provider has not been created")
8685
}
8786
return _provider
8887
}
8988

89+
let address = new URL("http://localhost")
9090
beforeAll(async () => {
9191
mockLogger()
9292

@@ -105,12 +105,13 @@ describe("update", () => {
105105
})
106106
})
107107

108-
_address = server.address()
109-
if (!isAddressInfo(_address)) {
110-
throw new Error("unexpected address")
108+
const addr = ensureAddress(server, "http")
109+
if (typeof addr === "string") {
110+
throw new Error("unable to run update tests with unix sockets")
111111
}
112-
113-
_provider = new UpdateProvider(`http://${_address?.address}:${_address?.port}/latest`, _settings)
112+
address = addr
113+
address.pathname = "/latest"
114+
_provider = new UpdateProvider(address.toString(), _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+
address.pathname = "/reject-status-code"
225+
const provider = new UpdateProvider(address.toString(), 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: `${address.toString()}: 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+
address.pathname = "/no-location-header"
238+
const provider = new UpdateProvider(address.toString(), 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+
address.pathname = "/with-location-header"
252+
const provider = new UpdateProvider(address.toString(), 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+
address.pathname = "/redirect/11"
261+
const provider = new UpdateProvider(address.toString(), 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
})

test/utils/helpers.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,20 +108,6 @@ export function idleTimer(message: string, reject: (error: Error) => void, delay
108108
}
109109
}
110110

111-
/**
112-
* A helper function which returns a boolean indicating whether
113-
* the given address is AddressInfo and has .address
114-
* and a .port property.
115-
*/
116-
export function isAddressInfo(address: unknown): address is net.AddressInfo {
117-
return (
118-
address !== null &&
119-
typeof address !== "string" &&
120-
(address as net.AddressInfo).port !== undefined &&
121-
(address as net.AddressInfo).address !== undefined
122-
)
123-
}
124-
125111
/**
126112
* If using a proxy, return the address of the proxy.
127113
*

0 commit comments

Comments
 (0)