pulsar_admin_rust/
tenants.rs

1use 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}