Skip to content

Commit 3e61b7c

Browse files
committed
feat(update): add test for rejection UpdateProvider
1 parent 8b3b51f commit 3e61b7c

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

test/unit/node/update.test.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import * as http from "http"
2+
import { logger } from "@coder/logger"
3+
import { AddressInfo } from "net"
24
import * as path from "path"
35
import { SettingsProvider, UpdateSettings } from "../../../src/node/settings"
46
import { LatestResponse, UpdateProvider } from "../../../src/node/update"
7+
import { isAddressInfo } from "../../../src/node/util"
58
import { clean, mockLogger, tmpdir } from "../../utils/helpers"
69

710
describe("update", () => {
@@ -23,6 +26,11 @@ describe("update", () => {
2326
return response.end(JSON.stringify(latest))
2427
}
2528

29+
if (request.url === "/reject-status-code") {
30+
response.writeHead(500)
31+
return response.end("rejected status code test")
32+
}
33+
2634
// Anything else is a 404.
2735
response.writeHead(404)
2836
response.end("not found")
@@ -37,6 +45,7 @@ describe("update", () => {
3745
}
3846

3947
let _provider: UpdateProvider | undefined
48+
let _address: string | AddressInfo | null
4049
const provider = (): UpdateProvider => {
4150
if (!_provider) {
4251
throw new Error("Update provider has not been created")
@@ -62,12 +71,12 @@ describe("update", () => {
6271
})
6372
})
6473

65-
const address = server.address()
66-
if (!address || typeof address === "string" || !address.port) {
74+
_address = server.address()
75+
if (!isAddressInfo(_address)) {
6776
throw new Error("unexpected address")
6877
}
6978

70-
_provider = new UpdateProvider(`http://${address.address}:${address.port}/latest`, _settings)
79+
_provider = new UpdateProvider(`http://${_address?.address}:${_address?.port}/latest`, _settings)
7180
})
7281

7382
afterAll(() => {
@@ -170,4 +179,19 @@ describe("update", () => {
170179
expect(update.checked < Date.now() && update.checked >= now).toEqual(true)
171180
expect(update.version).toStrictEqual("unknown")
172181
})
182+
183+
it("should reject if response has status code 500", async () => {
184+
if (isAddressInfo(_address)) {
185+
const mockURL = `http://${_address.address}:${_address.port}/reject-status-code`
186+
let provider = new UpdateProvider(mockURL, settings())
187+
let update = await provider.getUpdate(true)
188+
189+
expect(update.version).toBe("unknown")
190+
expect(logger.error).toHaveBeenCalled()
191+
expect(logger.error).toHaveBeenCalledWith("Failed to get latest version", {
192+
identifier: "error",
193+
value: `${mockURL}: 500`,
194+
})
195+
}
196+
})
173197
})

0 commit comments

Comments
 (0)