use std::time::Duration;
use wiremock::{MockServer, Request};
use crate::client::Client;
pub(crate) fn client(server: &MockServer) -> Client {
Client::builder()
.api_key("test-key")
.secret("test-secret")
.base_url(server.uri())
.backoff(|_| Duration::ZERO)
.build()
.expect("client builds")
}
pub(crate) async fn requests(server: &MockServer) -> Vec<Request> {
server.received_requests().await.expect("recording enabled")
}
pub(crate) async fn only_request(server: &MockServer) -> Request {
let mut received = requests(server).await;
assert_eq!(received.len(), 1, "expected exactly one request");
received.remove(0)
}
pub(crate) fn header(request: &Request, name: &str) -> Option<String> {
request
.headers
.get(name)
.and_then(|value| value.to_str().ok())
.map(str::to_string)
}
pub(crate) fn body(request: &Request) -> serde_json::Value {
serde_json::from_slice(&request.body).expect("a JSON body")
}