@@ -560,6 +560,22 @@ describe("isMaintainerTeamMember", () => {
|
560 | 560 | expect(await isMaintainerTeamMember({ token: "t", org: "o", login: "u", fetch })).toBe(false); |
561 | 561 | }); |
562 | 562 | |
| 563 | +it("cancels 404 membership response bodies", async () => { |
| 564 | +let canceled = false; |
| 565 | +const response = new Response( |
| 566 | +new ReadableStream<Uint8Array>({ |
| 567 | +cancel() { |
| 568 | +canceled = true; |
| 569 | +}, |
| 570 | +}), |
| 571 | +{ status: 404 }, |
| 572 | +); |
| 573 | +const fetch = vi.fn().mockResolvedValue(response); |
| 574 | + |
| 575 | +expect(await isMaintainerTeamMember({ token: "t", org: "o", login: "u", fetch })).toBe(false); |
| 576 | +expect(canceled).toBe(true); |
| 577 | +}); |
| 578 | + |
563 | 579 | it("returns false when the token, org, or login is missing", async () => { |
564 | 580 | const fetch = vi.fn(); |
565 | 581 | expect(await isMaintainerTeamMember({ org: "o", login: "u", fetch })).toBe(false); |
@@ -575,6 +591,24 @@ describe("isMaintainerTeamMember", () => {
|
575 | 591 | ).rejects.toThrow(/500/); |
576 | 592 | }); |
577 | 593 | |
| 594 | +it("cancels unexpected HTTP error response bodies", async () => { |
| 595 | +let canceled = false; |
| 596 | +const response = new Response( |
| 597 | +new ReadableStream<Uint8Array>({ |
| 598 | +cancel() { |
| 599 | +canceled = true; |
| 600 | +}, |
| 601 | +}), |
| 602 | +{ status: 500 }, |
| 603 | +); |
| 604 | +const fetch = vi.fn().mockResolvedValue(response); |
| 605 | + |
| 606 | +await expect( |
| 607 | +isMaintainerTeamMember({ token: "t", org: "o", login: "u", fetch }), |
| 608 | +).rejects.toThrow(/500/); |
| 609 | +expect(canceled).toBe(true); |
| 610 | +}); |
| 611 | + |
578 | 612 | it("aborts stalled membership fetches", async () => { |
579 | 613 | const fetch = vi.fn((_url: string, init: RequestInit) => { |
580 | 614 | return new Promise((_resolve, reject) => { |
|