summaryrefslogtreecommitdiff
path: root/tests/authorization/server_test.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/authorization/server_test.rs')
-rw-r--r--tests/authorization/server_test.rs48
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();
+ }
+}