pulsar_admin_rust/
tenants.rs1use std::error::Error;
2
3use crate::inner_http_client::InnerHttpClient;
4use crate::url_constants::URL_TENANTS;
5
6pub struct Tenants<'a> {
7 inner_http_client: &'a InnerHttpClient,
8}
9
10impl<'a> Tenants<'a> {
11 pub fn new(inner_http_client: &'a InnerHttpClient) -> Self {
12 Tenants { inner_http_client }
13 }
14
15 pub async fn get_tenants(&self) -> Result<Vec<String>, Box<dyn Error>> {
16 let url = self.inner_http_client.base_url.join(URL_TENANTS).unwrap();
17 let response = self.inner_http_client.client.get(url).send().await?.text().await?;
18 let tenants: Vec<String> = serde_json::from_str(&response)?;
19 Ok(tenants)
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use crate::PulsarAdmin;
26
27 const PULSAR_HOST: &str = "127.0.0.1";
28 const PULSAR_PORT: u16 = 8080;
29
30 #[tokio::test]
31 async fn test_get_tenants() {
32 let pulsar_admin = PulsarAdmin::new(PULSAR_HOST, PULSAR_PORT, None);
33 let tenants_api = pulsar_admin.tenants();
34 let tenants = tenants_api.get_tenants().await.unwrap();
35 assert!(!tenants.is_empty(), "Tenants list should not be empty");
36 }
37}