use futures::Future; use reqwest::{Response, Result as RResult, Url}; use serde_json::{from_str, Value}; use uuid::Uuid; const SERVER: &str = "u_server"; const PORT: &str = "63714"; type TestResult = Result>; fn url>(url: S) -> Url { Url::parse(&format!("http://{}:{}/{}", SERVER, PORT, url.as_ref())).unwrap() } async fn unpack(req: impl Future>) -> Value { let resp = req.await.unwrap().text().await.unwrap(); let resp: Value = from_str(&resp).unwrap(); resp.get("inner").unwrap().get(0).unwrap().clone() } async fn get>(_url: S) -> Value { let req = reqwest::get(url(_url)); unpack(req).await } #[tokio::test] async fn test_first_connection() -> TestResult { let agent_uid = Uuid::new_v4(); let resp = get(format!("get_agent_jobs/{}", agent_uid)).await; let job_id = &resp["job_id"]; let resp = get(format!("get_jobs/{}", job_id)).await; assert_eq!(&resp["alias"], "agent_hello"); Ok(()) }