diff --git a/src/clients/directory/requests/presence_topology_get.rs b/src/clients/directory/requests/presence_topology_get.rs index e69de29bb2..28d230d283 100644 --- a/src/clients/directory/requests/presence_topology_get.rs +++ b/src/clients/directory/requests/presence_topology_get.rs @@ -0,0 +1,58 @@ +use reqwest::Response; +use crate::clients::directory::presence::Topology; + +use serde::Deserialize; + + +pub struct Request { + base_url: String, +} + +pub trait PresenceTopologyGetRequester { + fn new(base_url: String) -> Self; + fn get(&self) -> Result; +} + +impl PresenceTopologyGetRequester for Request { + fn new(base_url: String) -> Self { + Request { base_url } + } + + fn get(&self) -> Result { + let url = format!("{}/topology", self.base_url); + reqwest::get(&url)?.json()? + } +} + +mod healthcheck_requests { + use super::*; + + #[cfg(test)] + use mockito::mock; + + #[cfg(test)] + mod on_a_400_status { + use super::*; + + #[test] + #[should_panic] + fn it_returns_an_error() { + let _m = mock("GET", "/healthcheck").with_status(400).create(); + let req = Request::new(mockito::server_url()); + assert_eq!(true, req.get().is_err()); + } + } + + #[cfg(test)] + mod on_a_200 { + use super::*; + + #[test] + fn it_returns_a_response_with_200_status() { + let _m = mock("GET", "/healthcheck").with_status(200).create(); + let req = Request::new(mockito::server_url()); + + assert_eq!(true, req.get().is_ok()); + } + } +}