use portpicker::pick_unused_port;
#[allow(dead_code)]
pub async fn find_port() -> u16 {
pick_unused_port().expect("No ports free")
}
use surf::{Client, RequestBuilder};
pub trait ServerTestingExt {
fn client(&self) -> Client;
fn connect(&self, uri: &str) -> RequestBuilder {
self.client().connect(uri)
}
fn delete(&self, uri: &str) -> RequestBuilder {
self.client().delete(uri)
}
fn get(&self, uri: &str) -> RequestBuilder {
self.client().get(uri)
}
fn head(&self, uri: &str) -> RequestBuilder {
self.client().head(uri)
}
fn options(&self, uri: &str) -> RequestBuilder {
self.client().options(uri)
}
fn patch(&self, uri: &str) -> RequestBuilder {
self.client().patch(uri)
}
fn post(&self, uri: &str) -> RequestBuilder {
self.client().post(uri)
}
fn put(&self, uri: &str) -> RequestBuilder {
self.client().put(uri)
}
fn trace(&self, uri: &str) -> RequestBuilder {
self.client().trace(uri)
}
}
impl<State: Clone + Send + Sync + Unpin + 'static> ServerTestingExt for tide::Server<State> {
fn client(&self) -> Client {
let mut client = Client::with_http_client(self.clone());
client.set_base_url(tide::http::Url::parse("http://example.com").unwrap());
client
}
}