(client: H3Client, strict: bool)
| 685 | |
| 686 | |
| 687 | async def _test_echo(client: H3Client, strict: bool) -> None: |
| 688 | def assert_no_data(response: H3Response): |
| 689 | if strict: |
| 690 | assert response.data is None |
| 691 | else: |
| 692 | assert not response.data |
| 693 | |
| 694 | headers = [ |
| 695 | (b":scheme", b"https"), |
| 696 | (b":authority", b"example.mitmproxy.org"), |
| 697 | (b":method", b"GET"), |
| 698 | (b":path", b"/test"), |
| 699 | ] |
| 700 | r1 = await client.request( |
| 701 | headers=headers + [(b"x-request", b"justheaders")], |
| 702 | data=None, |
| 703 | trailers=None, |
| 704 | ).wait_result() |
| 705 | assert r1.headers == [ |
| 706 | (b":status", b"200"), |
| 707 | (b"x-response", b"justheaders"), |
| 708 | ] |
| 709 | assert_no_data(r1) |
| 710 | assert r1.trailers is None |
| 711 | |
| 712 | r2 = await client.request( |
| 713 | headers=headers + [(b"x-request", b"hasdata")], |
| 714 | data=b"echo", |
| 715 | trailers=None, |
| 716 | ).wait_result() |
| 717 | assert r2.headers == [ |
| 718 | (b":status", b"200"), |
| 719 | (b"x-response", b"hasdata"), |
| 720 | ] |
| 721 | assert r2.data == b"echo" |
| 722 | assert r2.trailers is None |
| 723 | |
| 724 | r3 = await client.request( |
| 725 | headers=headers + [(b"x-request", b"nodata")], |
| 726 | data=None, |
| 727 | trailers=[(b"x-request", b"buttrailers")], |
| 728 | ).wait_result() |
| 729 | assert r3.headers == [ |
| 730 | (b":status", b"200"), |
| 731 | (b"x-response", b"nodata"), |
| 732 | ] |
| 733 | assert_no_data(r3) |
| 734 | assert r3.trailers == [(b"x-response", b"buttrailers")] |
| 735 | |
| 736 | r4 = await client.request( |
| 737 | headers=headers + [(b"x-request", b"this")], |
| 738 | data=b"has", |
| 739 | trailers=[(b"x-request", b"everything")], |
| 740 | ).wait_result() |
| 741 | assert r4.headers == [ |
| 742 | (b":status", b"200"), |
| 743 | (b"x-response", b"this"), |
| 744 | ] |
no test coverage detected
searching dependent graphs…