use portpicker::pick_unused_port;
#[allow(dead_code)]
pub async fn find_port() -> u16 {
pick_unused_port().expect("No ports free")
}
use std::convert::TryInto;
use surf::{Client, Config, 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 ServerTestingExt for envoy::Server {
fn client(&self) -> Client {
let config = Config::new()
.set_http_client(self.clone())
.set_base_url(envoy::http::Url::parse("http://example.com").unwrap());
config.try_into().unwrap()
}
}