test: tighten twilio api assertions

This commit is contained in:
Peter Steinberger
2026-05-09 21:24:57 +01:00
parent eabbf06d47
commit 46aa7e130f

View File

@@ -41,15 +41,11 @@ describe("twilioApiRequest", () => {
expect(auditContext).toBe("voice-call.twilio.api");
expect(policy).toEqual({ allowedHostnames: ["api.twilio.com"] });
expect(timeoutMs).toBe(30_000);
expect(init).toEqual(
expect.objectContaining({
method: "POST",
headers: {
Authorization: `Basic ${Buffer.from("AC123:secret").toString("base64")}`,
"Content-Type": "application/x-www-form-urlencoded",
},
}),
);
expect(init?.method).toBe("POST");
expect(init?.headers).toEqual({
Authorization: `Basic ${Buffer.from("AC123:secret").toString("base64")}`,
"Content-Type": "application/x-www-form-urlencoded",
});
const requestBody = init?.body;
if (!(requestBody instanceof URLSearchParams)) {
throw new Error("expected URLSearchParams request body");
@@ -126,20 +122,25 @@ describe("twilioApiRequest", () => {
release,
});
await expect(
twilioApiRequest({
try {
await twilioApiRequest({
baseUrl: "https://api.twilio.com",
accountSid: "AC123",
authToken: "secret",
endpoint: "/Calls/CA123.json",
body: {},
}),
).rejects.toMatchObject({
name: "TwilioApiError",
httpStatus: 400,
twilioCode: 21220,
message: "Twilio API error: 400 Call is not in-progress. Cannot redirect.",
} satisfies Partial<TwilioApiError>);
});
throw new Error("expected Twilio API request to reject");
} catch (error) {
expect(error).toBeInstanceOf(TwilioApiError);
const twilioError = error as TwilioApiError;
expect(twilioError.name).toBe("TwilioApiError");
expect(twilioError.httpStatus).toBe(400);
expect(twilioError.twilioCode).toBe(21220);
expect(twilioError.message).toBe(
"Twilio API error: 400 Call is not in-progress. Cannot redirect.",
);
}
expect(release).toHaveBeenCalledTimes(1);
});
});