diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-02 12:32:27 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-02 12:32:27 -0600 |
| commit | a577c62277e3d651b66fd68dbe800bf3ab5c4921 (patch) | |
| tree | 7ae4e79fc84c539c12fb0313d0d3cc929b2e12ae /tests/authorization/server_test.rs | |
| parent | c2b8edab01b23fde6cc196a3349ad6aa19a93299 (diff) | |
| parent | 0b610d061e45811130d8cf3919037fdc9513e340 (diff) | |
Merge branch 'rs' into 'main'
Re-write the authorization daemon in rust
See merge request gitlab-org/software-supply-chain-security/authorization/authzd!1
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(); + } +} |
