def test_explicit_backend_name() -> None: with httpcore.SyncConnectionPool(backend=lookup_sync_backend()) as http: method = b"GET" url = (b"http", b"example.org", 80, b"/") headers = [(b"host", b"example.org")] status_code, headers, stream, ext = http.request(method, url, headers) read_body(stream) assert status_code == 200 assert ext == {"http_version": "HTTP/1.1", "reason": "OK"} assert len(http._connections[url[:3]]) == 1 # type: ignore
def test_explicit_backend_name(server: Server) -> None: with httpcore.SyncConnectionPool(backend=lookup_sync_backend()) as http: method = b"GET" url = (b"http", *server.netloc, b"/") headers = [server.host_header] status_code, headers, stream, ext = http.request(method, url, headers) read_body(stream) assert status_code == 200 reason = "OK" if server.sends_reason else "" assert ext == {"http_version": "HTTP/1.1", "reason": reason} assert len(http._connections[url[:3]]) == 1 # type: ignore
def test_http_request_local_address(backend: str) -> None: if backend == "sync" and lookup_sync_backend() == "trio": pytest.skip("The trio backend does not support local_address") with httpcore.SyncConnectionPool(backend=backend, local_address="0.0.0.0") as http: method = b"GET" url = (b"http", b"example.org", 80, b"/") headers = [(b"host", b"example.org")] status_code, headers, stream, ext = http.request(method, url, headers) read_body(stream) assert status_code == 200 assert ext == {"http_version": "HTTP/1.1", "reason": "OK"} assert len(http._connections[url[:3]]) == 1 # type: ignore
def test_http_request_local_address(backend: str, server: Server) -> None: if backend == "sync" and lookup_sync_backend() == "trio": pytest.skip("The trio backend does not support local_address") with httpcore.SyncConnectionPool(backend=backend, local_address="0.0.0.0") as http: method = b"GET" url = (b"http", *server.netloc, b"/") headers = [server.host_header] status_code, headers, stream, ext = http.request(method, url, headers) read_body(stream) assert status_code == 200 reason = "OK" if server.sends_reason else "" assert ext == {"http_version": "HTTP/1.1", "reason": reason} assert len(http._connections[url[:3]]) == 1 # type: ignore
def test_explicit_backend_name(server: Server) -> None: with httpcore.SyncConnectionPool(backend=lookup_sync_backend()) as http: status_code, headers, stream, extensions = http.handle_request( method=b"GET", url=(b"http", *server.netloc, b"/"), headers=[server.host_header], stream=httpcore.ByteStream(b""), extensions={}, ) read_body(stream) assert status_code == 200 reason_phrase = b"OK" if server.sends_reason else b"" assert extensions == { "http_version": b"HTTP/1.1", "reason_phrase": reason_phrase, } origin = (b"http", *server.netloc) assert len(http._connections[origin]) == 1 # type: ignore
def test_http_request_local_address(backend: str, server: Server) -> None: if backend == "sync" and lookup_sync_backend() == "trio": pytest.skip("The trio backend does not support local_address") with httpcore.SyncConnectionPool(backend=backend, local_address="0.0.0.0") as http: status_code, headers, stream, extensions = http.handle_request( method=b"GET", url=(b"http", *server.netloc, b"/"), headers=[server.host_header], stream=httpcore.ByteStream(b""), extensions={}, ) read_body(stream) assert status_code == 200 reason_phrase = b"OK" if server.sends_reason else b"" assert extensions == { "http_version": b"HTTP/1.1", "reason_phrase": reason_phrase, } origin = (b"http", *server.netloc) assert len(http._connections[origin]) == 1 # type: ignore