diff options
Diffstat (limited to 'tests/authorization/server_test.rs')
| -rw-r--r-- | tests/authorization/server_test.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/authorization/server_test.rs b/tests/authorization/server_test.rs new file mode 100644 index 00000000..fe8c8a73 --- /dev/null +++ b/tests/authorization/server_test.rs @@ -0,0 +1,48 @@ +#[cfg(test)] +mod tests { + use crate::support::factory_bot::*; + use std::net::SocketAddr; + use tokio::net::TcpListener; + + async fn available_port() -> SocketAddr { + let listener = TcpListener::bind("127.0.0.1:0") + .await + .expect("Failed to bind to random port"); + let addr = listener.local_addr().expect("Failed to get local address"); + drop(listener); + addr + } + + async fn start_server() -> (SocketAddr, tokio::task::JoinHandle<()>) { + let addr = available_port().await; + let server = authzd::authorization::Server::default(); + + let handle = tokio::spawn(async move { + server.serve(addr).await.expect("Failed to start server"); + }); + + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; + + (addr, handle) + } + + #[tokio::test] + async fn test_health_check_service() { + let (addr, server) = start_server().await; + let mut client = + build_rpc_client(addr, tonic_health::pb::health_client::HealthClient::new).await; + + let request = tonic::Request::new(tonic_health::pb::HealthCheckRequest { + service: String::new(), + }); + let response = client.check(request).await; + + assert!(response.is_ok()); + assert_eq!( + response.unwrap().into_inner().status(), + tonic_health::pb::health_check_response::ServingStatus::Serving + ); + + server.abort(); + } +} |
