Start a TLS-wrapped test server using the given `TlsAcceptor`. Returns the bound address and a task handle (abort to stop).
(
tls_acceptor: TlsAcceptor,
)
| 556 | /// Start a TLS-wrapped test server using the given `TlsAcceptor`. |
| 557 | /// Returns the bound address and a task handle (abort to stop). |
| 558 | pub async fn start_test_server( |
| 559 | tls_acceptor: TlsAcceptor, |
| 560 | ) -> (SocketAddr, tokio::task::JoinHandle<()>) { |
| 561 | let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); |
| 562 | let addr = listener.local_addr().unwrap(); |
| 563 | |
| 564 | let grpc_service = OpenShellServer::new(TestOpenShell); |
| 565 | let http_service = health_router(test_health_store().await); |
| 566 | let service = MultiplexedService::new(grpc_service, http_service); |
| 567 | |
| 568 | let handle = tokio::spawn(async move { |
| 569 | loop { |
| 570 | let Ok((stream, _)) = listener.accept().await else { |
| 571 | continue; |
| 572 | }; |
| 573 | let svc = service.clone(); |
| 574 | let tls = tls_acceptor.clone(); |
| 575 | tokio::spawn(async move { |
| 576 | let Ok(tls_stream) = tls.acceptor().accept(stream).await else { |
| 577 | return; |
| 578 | }; |
| 579 | let _ = Builder::new(TokioExecutor::new()) |
| 580 | .serve_connection(TokioIo::new(tls_stream), svc) |
| 581 | .await; |
| 582 | }); |
| 583 | } |
| 584 | }); |
| 585 | |
| 586 | (addr, handle) |
| 587 | } |
| 588 | /// Rogue PKI bundle: client cert + key not signed by the server's CA. |
| 589 | pub struct RoguePkiBundle { |
| 590 | pub client_cert_pem: String, |
no test coverage detected