Ensure that server-sent headers/trailers make it through.
()
| 2689 | |
| 2690 | |
| 2691 | def test_headers_trailers(): |
| 2692 | """Ensure that server-sent headers/trailers make it through.""" |
| 2693 | |
| 2694 | class HeadersTrailersFlightServer(FlightServerBase): |
| 2695 | def get_flight_info(self, context, descriptor): |
| 2696 | context.add_header("x-header", "header-value") |
| 2697 | context.add_header("x-header-bin", "header\x01value") |
| 2698 | context.add_trailer("x-trailer", "trailer-value") |
| 2699 | context.add_trailer("x-trailer-bin", "trailer\x01value") |
| 2700 | return flight.FlightInfo( |
| 2701 | pa.schema([]), |
| 2702 | descriptor, |
| 2703 | [] |
| 2704 | ) |
| 2705 | |
| 2706 | class HeadersTrailersMiddlewareFactory(ClientMiddlewareFactory): |
| 2707 | def __init__(self): |
| 2708 | self.headers = [] |
| 2709 | |
| 2710 | def start_call(self, info): |
| 2711 | return HeadersTrailersMiddleware(self) |
| 2712 | |
| 2713 | class HeadersTrailersMiddleware(ClientMiddleware): |
| 2714 | def __init__(self, factory): |
| 2715 | self.factory = factory |
| 2716 | |
| 2717 | def received_headers(self, headers): |
| 2718 | for key, values in headers.items(): |
| 2719 | for value in values: |
| 2720 | self.factory.headers.append((key, value)) |
| 2721 | |
| 2722 | factory = HeadersTrailersMiddlewareFactory() |
| 2723 | with HeadersTrailersFlightServer() as server, \ |
| 2724 | FlightClient(("localhost", server.port), middleware=[factory]) as client: |
| 2725 | client.get_flight_info(flight.FlightDescriptor.for_path("")) |
| 2726 | assert ("x-header", "header-value") in factory.headers |
| 2727 | assert ("x-header-bin", b"header\x01value") in factory.headers |
| 2728 | assert ("x-trailer", "trailer-value") in factory.headers |
| 2729 | assert ("x-trailer-bin", b"trailer\x01value") in factory.headers |
| 2730 | |
| 2731 | |
| 2732 | def test_flight_dictionary_deltas_do_exchange(): |
nothing calls this directly
no test coverage detected