1
0
Fork 0

pass in http client to constructor

pull/1486/head
Bethany 2023-08-07 08:43:39 -07:00
parent 4c6d88f93a
commit efcab31d38
2 changed files with 15 additions and 10 deletions

View File

@ -11,11 +11,11 @@ describe("artifact-http-client", () => {
jest.spyOn(core, "debug").mockImplementation(() => {}) jest.spyOn(core, "debug").mockImplementation(() => {})
jest.spyOn(core, "info").mockImplementation(() => {}) jest.spyOn(core, "info").mockImplementation(() => {})
jest.spyOn(core, "warning").mockImplementation(() => {}) jest.spyOn(core, "warning").mockImplementation(() => {})
jest.spyOn(config, "getResultsServiceUrl").mockReturnValue("http://localhost:8080")
jest.spyOn(config, "getRuntimeToken").mockReturnValue("token")
}) })
it("should successfully create a client", () => { it("should successfully create a client", () => {
jest.spyOn(config, "getResultsServiceUrl").mockReturnValue("http://localhost:8080")
jest.spyOn(config, "getRuntimeToken").mockReturnValue("token")
const client = createArtifactTwirpClient("upload") const client = createArtifactTwirpClient("upload")
expect(client).toBeDefined() expect(client).toBeDefined()
}) })
@ -27,7 +27,8 @@ describe("artifact-http-client", () => {
workflowRunBackendId: "1234", workflowRunBackendId: "1234",
workflowJobRunBackendId: "5678", workflowJobRunBackendId: "5678",
name: "artifact", name: "artifact",
version: 4} version: 4
}
) )
expect(artifact).toBeDefined() expect(artifact).toBeDefined()
}) })

View File

@ -21,13 +21,17 @@ class ArtifactHttpClient implements Rpc {
private baseRetryIntervalMilliseconds: number = 3000 private baseRetryIntervalMilliseconds: number = 3000
private retryMultiplier: number = 1.5 private retryMultiplier: number = 1.5
constructor(userAgent: string) { constructor(userAgent: string, httpClient?: HttpClient) {
const token = getRuntimeToken() const token = getRuntimeToken()
this.httpClient = new HttpClient(
userAgent,
[new BearerCredentialHandler(token)],
)
this.baseUrl = getResultsServiceUrl() this.baseUrl = getResultsServiceUrl()
if (httpClient) {
this.httpClient = httpClient
} else {
this.httpClient = new HttpClient(
userAgent,
[new BearerCredentialHandler(token)],
)
}
} }
// This function satisfies the Rpc interface. It is compatible with the JSON // This function satisfies the Rpc interface. It is compatible with the JSON
@ -127,7 +131,7 @@ class ArtifactHttpClient implements Rpc {
} }
} }
export function createArtifactTwirpClient(type: "upload" | "download"): ArtifactServiceClientJSON { export function createArtifactTwirpClient(type: "upload" | "download", httpClient?: HttpClient): ArtifactServiceClientJSON {
const client = new ArtifactHttpClient(`@actions/artifact-${type}`) const client = new ArtifactHttpClient(`@actions/artifact-${type}`, httpClient)
return new ArtifactServiceClientJSON(client) return new ArtifactServiceClientJSON(client)
} }