use crate::Client;
use crate::resource::Resource;
pub type CloudAccount = crate::models::CloudAccount;
pub type CloudNetworkPrefixAssignment = crate::models::CloudNetworkPrefixAssignment;
pub type CloudNetwork = crate::models::CloudNetwork;
pub type CloudResourceType = crate::models::CloudResourceType;
pub type CloudServiceNetworkAssignment = crate::models::CloudServiceNetworkAssignment;
pub type CloudService = crate::models::CloudService;
pub type CloudAccountsApi = Resource<crate::models::CloudAccount>;
pub type CloudNetworkPrefixAssignmentsApi = Resource<crate::models::CloudNetworkPrefixAssignment>;
pub type CloudNetworksApi = Resource<crate::models::CloudNetwork>;
pub type CloudResourceTypesApi = Resource<crate::models::CloudResourceType>;
pub type CloudServiceNetworkAssignmentsApi = Resource<crate::models::CloudServiceNetworkAssignment>;
pub type CloudServicesApi = Resource<crate::models::CloudService>;
#[derive(Clone)]
pub struct CloudApi {
client: Client,
}
impl CloudApi {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub fn cloud_accounts(&self) -> CloudAccountsApi {
Resource::new(self.client.clone(), "cloud/cloud-accounts/")
}
pub fn cloud_network_prefix_assignments(&self) -> CloudNetworkPrefixAssignmentsApi {
Resource::new(
self.client.clone(),
"cloud/cloud-network-prefix-assignments/",
)
}
pub fn cloud_networks(&self) -> CloudNetworksApi {
Resource::new(self.client.clone(), "cloud/cloud-networks/")
}
pub fn cloud_resource_types(&self) -> CloudResourceTypesApi {
Resource::new(self.client.clone(), "cloud/cloud-resource-types/")
}
pub fn cloud_service_network_assignments(&self) -> CloudServiceNetworkAssignmentsApi {
Resource::new(
self.client.clone(),
"cloud/cloud-service-network-assignments/",
)
}
pub fn cloud_services(&self) -> CloudServicesApi {
Resource::new(self.client.clone(), "cloud/cloud-services/")
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::ClientConfig;
use httpmock::{Method::GET, MockServer};
use serde_json::json;
#[cfg_attr(miri, ignore)]
#[tokio::test]
async fn cloud_assignment_resources_hit_expected_paths() {
let server = MockServer::start();
let config = ClientConfig::new(server.base_url(), "token").with_max_retries(0);
let client = Client::new(config).unwrap();
let api = CloudApi::new(client);
let list_response = json!({
"count": 0,
"next": null,
"previous": null,
"results": []
});
server.mock(|when, then| {
when.method(GET)
.path("/api/cloud/cloud-network-prefix-assignments/");
then.status(200).json_body(list_response.clone());
});
server.mock(|when, then| {
when.method(GET)
.path("/api/cloud/cloud-service-network-assignments/");
then.status(200).json_body(list_response.clone());
});
let network_prefix = api
.cloud_network_prefix_assignments()
.list(None)
.await
.unwrap();
assert!(network_prefix.results.is_empty());
let service_network = api
.cloud_service_network_assignments()
.list(None)
.await
.unwrap();
assert!(service_network.results.is_empty());
}
}