26 lines
886 B
Rust
26 lines
886 B
Rust
use alpha_id::ionos::IonosClient;
|
|
use std::io::Write;
|
|
|
|
fn mock_server(body: &'static str) -> (String, std::thread::JoinHandle<()>) {
|
|
let server = tiny_http::Server::http("127.0.0.1:0").unwrap();
|
|
let url = format!("http://{}", server.server_addr());
|
|
let h = std::thread::spawn(move || {
|
|
if let Ok(req) = server.recv() {
|
|
let resp = tiny_http::Response::from_string(body);
|
|
req.respond(resp).ok();
|
|
}
|
|
});
|
|
(url, h)
|
|
}
|
|
|
|
#[test]
|
|
fn posts_json_and_parses_response() {
|
|
let (url, h) = mock_server(r#"{"ok":true}"#);
|
|
let mut tf = tempfile::NamedTempFile::new().unwrap();
|
|
write!(tf, "test-token-123").unwrap();
|
|
let c = IonosClient::new(&url, tf.path().to_str().unwrap()).unwrap();
|
|
let v: serde_json::Value = c.post_json("/ping", &serde_json::json!({"x":1})).unwrap();
|
|
assert_eq!(v["ok"], true);
|
|
h.join().ok();
|
|
}
|