144 lines
4.3 KiB
Rust
144 lines
4.3 KiB
Rust
use {
|
|
assert_cmd::Command,
|
|
icann_rdap_srv::{
|
|
config::ListenConfig,
|
|
server::{AppState, Listener},
|
|
storage::{
|
|
mem::{config::MemConfig, ops::Mem},
|
|
CommonConfig,
|
|
},
|
|
},
|
|
std::time::Duration,
|
|
test_dir::{DirBuilder, TestDir},
|
|
};
|
|
|
|
pub struct RdapSrvStoreTestJig {
|
|
pub cmd: Command,
|
|
#[allow(dead_code)]
|
|
pub source_dir: TestDir,
|
|
pub data_dir: TestDir,
|
|
}
|
|
|
|
impl RdapSrvStoreTestJig {
|
|
pub fn new() -> RdapSrvStoreTestJig {
|
|
let source_dir = TestDir::temp();
|
|
let data_dir = TestDir::temp();
|
|
let mut cmd = Command::cargo_bin("rdap-srv-store").expect("cannot find rdap-srv-store cmd");
|
|
cmd.env_clear()
|
|
.timeout(Duration::from_secs(2))
|
|
.env("RDAP_BASE_URL", "http://localhost:3000/rdap")
|
|
.env("RDAP_SRV_LOG", "debug")
|
|
.env("RDAP_SRV_DATA_DIR", data_dir.root());
|
|
Self {
|
|
cmd,
|
|
source_dir,
|
|
data_dir,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub struct RdapSrvDataTestJig {
|
|
pub cmd: Command,
|
|
pub source_dir: TestDir,
|
|
pub data_dir: TestDir,
|
|
}
|
|
|
|
impl RdapSrvDataTestJig {
|
|
pub fn new() -> Self {
|
|
let source_dir = TestDir::temp();
|
|
let data_dir = TestDir::temp();
|
|
let mut cmd = Command::cargo_bin("rdap-srv-data").expect("cannot find rdap-srv-data cmd");
|
|
cmd.env_clear()
|
|
.timeout(Duration::from_secs(2))
|
|
.env("RDAP_BASE_URL", "http://localhost:3000/rdap")
|
|
.env("RDAP_SRV_LOG", "debug")
|
|
.env("RDAP_SRV_DATA_DIR", data_dir.root());
|
|
Self {
|
|
cmd,
|
|
source_dir,
|
|
data_dir,
|
|
}
|
|
}
|
|
|
|
pub fn new_cmd(self) -> Self {
|
|
let mut cmd = Command::cargo_bin("rdap-srv-data").expect("cannot find rdap-srv-data cmd");
|
|
cmd.env_clear()
|
|
.timeout(Duration::from_secs(2))
|
|
.env("RDAP_BASE_URL", "http://localhost:3000/rdap")
|
|
.env("RDAP_SRV_LOG", "debug")
|
|
.env("RDAP_SRV_DATA_DIR", self.data_dir.root());
|
|
Self {
|
|
cmd,
|
|
source_dir: self.source_dir,
|
|
data_dir: self.data_dir,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub struct SrvTestJig {
|
|
pub mem: Mem,
|
|
pub rdap_base: String,
|
|
}
|
|
|
|
impl SrvTestJig {
|
|
pub async fn new() -> Self {
|
|
let mem = Mem::default();
|
|
let app_state = AppState {
|
|
storage: mem.clone(),
|
|
bootstrap: false,
|
|
};
|
|
let _ = tracing_subscriber::fmt().with_test_writer().try_init();
|
|
let listener = Listener::listen(&ListenConfig::default())
|
|
.await
|
|
.expect("listening on interface");
|
|
let rdap_base = listener.rdap_base();
|
|
tokio::spawn(async move {
|
|
listener
|
|
.start_with_state(app_state)
|
|
.await
|
|
.expect("starting server");
|
|
});
|
|
Self { mem, rdap_base }
|
|
}
|
|
|
|
pub async fn new_common_config(common_config: CommonConfig) -> Self {
|
|
let mem_config = MemConfig::builder().common_config(common_config).build();
|
|
let mem = Mem::new(mem_config);
|
|
let app_state = AppState {
|
|
storage: mem.clone(),
|
|
bootstrap: false,
|
|
};
|
|
let _ = tracing_subscriber::fmt().with_test_writer().try_init();
|
|
let listener = Listener::listen(&ListenConfig::default())
|
|
.await
|
|
.expect("listening on interface");
|
|
let rdap_base = listener.rdap_base();
|
|
tokio::spawn(async move {
|
|
listener
|
|
.start_with_state(app_state)
|
|
.await
|
|
.expect("starting server");
|
|
});
|
|
Self { mem, rdap_base }
|
|
}
|
|
|
|
pub async fn new_bootstrap() -> Self {
|
|
let mem = Mem::default();
|
|
let app_state = AppState {
|
|
storage: mem.clone(),
|
|
bootstrap: true,
|
|
};
|
|
let _ = tracing_subscriber::fmt().with_test_writer().try_init();
|
|
let listener = Listener::listen(&ListenConfig::default())
|
|
.await
|
|
.expect("listening on interface");
|
|
let rdap_base = listener.rdap_base();
|
|
tokio::spawn(async move {
|
|
listener
|
|
.start_with_state(app_state)
|
|
.await
|
|
.expect("starting server");
|
|
});
|
|
Self { mem, rdap_base }
|
|
}
|
|
}
|